Commit Graph

18 Commits

Author SHA1 Message Date
Kegan Dougal 6f3b70dbb0 Use Q promises and isPending to make logic simpler 2017-01-24 12:43:18 +00:00
Kegan Dougal f3df86872b Fix tightlooping when flush()ing without any logs
The promise would resolve immediately, nulling out `flushPromise`. This would
then immediately be set from `new Promise((resolve, reject) => {...})` turning
it back into non-null `flushPromise`. The resolve handler was called so the
next `flush()` would see "oh yes, there is a non-null `flushPromise`" then
promptly try to set `flushAgainPromise` which chains off the resolved
`flushPromise` which relied on `flushPromise` being `null`ed out after
`resolve()`, causing the chained `flush()` to see "oh yes, there is a non-null
`flushPromise`" which... ad infinitum.

This PR fixes it by making the nulling out asynchronous but the fact it took
me this long to debug this issue indicates to me that this is a terrible piece
of code. Will re-write.
2017-01-23 17:37:57 +00:00
Kegan Dougal 2ecf65f057 Keep the logs if no store exists 2017-01-23 09:28:48 +00:00
Kegan Dougal ea063ab8b0 Address race conditions when flushing logs 2017-01-20 14:46:19 +00:00
Kegan Dougal 378126e746 Add another store to keep last modified times
This makes it easier to get a list of all the log IDs. It also makes it possible
to order the logs by the *LAST* log line and not the first as was the case
previously, which is important in the case of long-running tabs.
2017-01-20 14:00:30 +00:00
Kegan Dougal 41c6294be2 Remove clearAll from consume(): we want duplicate logs on multiple reports 2017-01-20 13:02:57 +00:00
Kegan Dougal ba1e166ac8 Line length 80 like we're still in the 80s 2017-01-20 12:02:48 +00:00
Kegan Dougal ea860807c4 Add a monkeyPatch function rather than monkey-patching in the constructor 2017-01-20 11:56:11 +00:00
Kegan Dougal 53a16158c7 Remove logs when submitting bug reports 2017-01-19 17:41:08 +00:00
Kegan Dougal beba4d2ae3 Add version and user agent to bug report 2017-01-19 17:40:21 +00:00
Kegan Dougal 3996d23b19 Inject bug report endpoint URL from config.json 2017-01-19 16:49:25 +00:00
Kegan Dougal bf887e82fe Swap to async/await rather than promise chains
Since we do in fact support coroutines!
2017-01-19 16:40:54 +00:00
Kegan Dougal 81d437ac1e POST reports to localhost for now. Also send live console logs 2017-01-19 15:47:55 +00:00
Kegan Dougal 608c1b0208 Finish implementing consume()
- Fetches all logs in order and concatenates correctly.
- Purges old logs correctly.
2017-01-19 15:03:47 +00:00
Kegan Dougal 89d514a532 Query IndexedDB for all results with index=0 2017-01-19 12:02:19 +00:00
Kegan Dougal 811086ac8e Comment how we should consume logs 2017-01-18 17:18:02 +00:00
Kegan Dougal 5828ab1077 Generate unique IDs for each JS runtime to accomodate multiple tabs 2017-01-18 16:27:11 +00:00
Kegan Dougal e9884768f6 Persist console logs to an IndexedDB instance 2017-01-18 16:00:13 +00:00