8 changed files with 81 additions and 8 deletions
			
			
		| @ -0,0 +1,34 @@ | |||
| import BaseDexie from "dexie"; | |||
| import { encrypted, Encryption } from "@pvermeer/dexie-encrypted-addon"; | |||
| import { accountsSchema, AccountsTable } from "./tables/accounts"; | |||
| type DexieTables = AccountsTable; | |||
| 
 | |||
| /** | |||
|  * In order to make the next line be acceptable, the program needs to have its linter suppress a rule: | |||
|  *   https://typescript-eslint.io/rules/no-unnecessary-type-constraint/
 | |||
|  * | |||
|  * and change *any* to *unknown* | |||
|  * | |||
|  *   https://9to5answer.com/how-to-bypass-warning-unexpected-any-specify-a-different-type-typescript-eslint-no-explicit-any
 | |||
|  */ | |||
| //export type Dexie<T extends any = DexieTables> = BaseDexie & T;
 | |||
| export type Dexie<T extends unknown = DexieTables> = BaseDexie & T; | |||
| 
 | |||
| export const db = new BaseDexie("kickStarter") as Dexie; | |||
| const schema = Object.assign({}, accountsSchema); | |||
| 
 | |||
| // if db already made, skip creation
 | |||
| BaseDexie.exists("kickStarter").then(function (exists) { | |||
|   if (exists == false) { | |||
|     // create password and place password in localStorage
 | |||
|     const secret = | |||
|       localStorage.getItem("secret") || Encryption.createRandomEncryptionKey(); | |||
| 
 | |||
|     if (localStorage.getItem("secret") == null) { | |||
|       localStorage.setItem("secret", secret); | |||
|     } | |||
| 
 | |||
|     encrypted(db, { secretKey: secret }); | |||
|     db.version(1).stores(schema); | |||
|   } | |||
| }); | |||
| @ -0,0 +1,15 @@ | |||
| import { Table } from "dexie"; | |||
| 
 | |||
| export type Account = { | |||
|   id?: number; | |||
|   publicKey: string; | |||
|   identity: string; | |||
| }; | |||
| 
 | |||
| export type AccountsTable = { | |||
|   accounts: Table<Account>; | |||
| }; | |||
| 
 | |||
| export const accountsSchema = { | |||
|   accounts: "++id, publicKey, $identity", | |||
| }; | |||
					Loading…
					
					
				
		Reference in new issue