Do not run leveldb on content script
This commit is contained in:
parent
56dc20abff
commit
ba349d96cf
|
@ -1,10 +1,14 @@
|
||||||
import { isStatePopulated, isStateClear, PartialStateUpdate, ExporterState, isStateAbleToRequest } from "../state";
|
import { isStatePopulated, isStateClear, PartialStateUpdate, ExporterState, isStateAbleToRequest } from "../state";
|
||||||
import { Status } from '../state';
|
import { Status } from '../state';
|
||||||
import { State } from '../state/level';
|
import { LevelState } from '../state/level';
|
||||||
import * as landsbankinn from '../landsbankinn';
|
import * as landsbankinn from '../landsbankinn';
|
||||||
import { fetchAccounts } from "../landsbankinn";
|
import { fetchAccounts } from "../landsbankinn";
|
||||||
import { Actions, EnsureStateMessage, EnsureStateReply, GetAccountsReply } from './messages';
|
import { Actions, EnsureStateMessage, EnsureStateReply, GetAccountsReply } from './messages';
|
||||||
|
|
||||||
|
// State singleton (move to its own file if we eventually get more
|
||||||
|
// than 1 background script)
|
||||||
|
const State = new LevelState();
|
||||||
|
|
||||||
async function ensureDataPopulated(state: ExporterState) {
|
async function ensureDataPopulated(state: ExporterState) {
|
||||||
if (isStateAbleToRequest(state) && !isStatePopulated(state)) {
|
if (isStateAbleToRequest(state) && !isStatePopulated(state)) {
|
||||||
const accounts = await fetchAccounts(state);
|
const accounts = await fetchAccounts(state);
|
||||||
|
|
|
@ -7,7 +7,7 @@ type LevelError = Error | null | undefined;
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
const errorNotFound = (err: LevelError) => err.code && err.code == 'LEVEL_NOT_FOUND';
|
const errorNotFound = (err: LevelError) => err.code && err.code == 'LEVEL_NOT_FOUND';
|
||||||
|
|
||||||
class LevelState {
|
export class LevelState {
|
||||||
private _db = new Level('landsbankinn-exporter', { valueEncoding: 'json' });
|
private _db = new Level('landsbankinn-exporter', { valueEncoding: 'json' });
|
||||||
private currentTTLHandle: number | undefined = -1;
|
private currentTTLHandle: number | undefined = -1;
|
||||||
|
|
||||||
|
@ -55,5 +55,3 @@ class LevelState {
|
||||||
return this.current;
|
return this.current;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const State: LevelState = new LevelState();
|
|
||||||
|
|
4
todo.org
4
todo.org
|
@ -2,10 +2,10 @@ How to get it working:
|
||||||
- [X] Landsbankinn API client for arbitrary transaction lists
|
- [X] Landsbankinn API client for arbitrary transaction lists
|
||||||
- [ ] Transform raw transactions into friendlier ones (i.e. date objects)
|
- [ ] Transform raw transactions into friendlier ones (i.e. date objects)
|
||||||
- [X] Content script that can run all the time and puts a button somewhere (statements tab, and extension icon)
|
- [X] Content script that can run all the time and puts a button somewhere (statements tab, and extension icon)
|
||||||
- [ ] Use config.ts to set TTL for state
|
- [X] Use config.ts to set TTL for state
|
||||||
- [ ] Background page that downloads all the shit and combines into CSV, then 'downloads' file.
|
- [ ] Background page that downloads all the shit and combines into CSV, then 'downloads' file.
|
||||||
- [X] Build up communication message passing to background page for downloads
|
- [X] Build up communication message passing to background page for downloads
|
||||||
- [ ] Don't run level on client.
|
- [X] Don't run level on client.
|
||||||
- [-] Investigate persistent = false + setTimeout
|
- [-] Investigate persistent = false + setTimeout
|
||||||
- [ ] Maybe can force clear state when page reloads itself?
|
- [ ] Maybe can force clear state when page reloads itself?
|
||||||
- [X] Change ready true/false to lock state, of not updated, updating, ready
|
- [X] Change ready true/false to lock state, of not updated, updating, ready
|
||||||
|
|
Loading…
Reference in New Issue