diff --git a/shims/stringify.js b/shims/stringify.js index 2cbf0580..2e7ba4d5 100644 --- a/shims/stringify.js +++ b/shims/stringify.js @@ -14,31 +14,36 @@ // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR // IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces) -} - -function serializer(replacer, cycleReplacer) { - var stack = [], keys = [] - - if (cycleReplacer == null) cycleReplacer = function(key, value) { - if (stack[0] === value) return "[Circular ~]" - return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]" - } - - return function(key, value) { - if (stack.length > 0) { - var thisPos = stack.indexOf(this) - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this) - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key) - if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value) - } - else stack.push(value) - - return replacer == null ? value : replacer.call(this, key, value) - } -} - -JSON.origStringify = JSON.stringify; - -JSON.stringify = (obj, replacer, spaces, cycleReplacer) => JSON.origStringify(obj, serializer(replacer, cycleReplacer), spaces); \ No newline at end of file +// This shim exists to resolve the "cannot serialize cyclic structures" error +// in certain versions of react native. It breaks the stringification of ETH transactions +// and may prevent ETH transactions from displaying properly. If the cyclic structures +// bug returns, uncomment and fix the "replacer.call is not a function" bug on line 43. + +// function stringify(obj, replacer, spaces, cycleReplacer) { +// return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces) +// } + +// function serializer(replacer, cycleReplacer) { +// var stack = [], keys = [] + +// if (cycleReplacer == null) cycleReplacer = function(key, value) { +// if (stack[0] === value) return "[Circular ~]" +// return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]" +// } + +// return function(key, value) { +// if (stack.length > 0) { +// var thisPos = stack.indexOf(this) +// ~thisPos ? stack.splice(thisPos + 1) : stack.push(this) +// ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key) +// if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value) +// } +// else stack.push(value) + +// return replacer == null ? value : replacer.call(this, key, value) +// } +// } + +// JSON.origStringify = JSON.stringify; + +// JSON.stringify = (obj, replacer, spaces, cycleReplacer) => JSON.origStringify(obj, serializer(replacer, cycleReplacer), spaces); \ No newline at end of file