From 5f70749e97bf98cd1863baf5aa102bb3b959a831 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Wed, 18 Aug 2021 16:27:22 +0200 Subject: [PATCH] Added basic userstore --- package.json | 3 +- src/lib/UserStore.js | 61 ++++++++++++++++++++++++++++++++++++++ src/routes/__layout.svelte | 9 ++++++ yarn.lock | 19 ++++++++++++ 4 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 src/lib/UserStore.js diff --git a/package.json b/package.json index 7a48007..2d5b22e 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,8 @@ "type": "module", "dependencies": { "@sveltejs/adapter-static": "^1.0.0-next.16", - "axios": "^0.21.1" + "axios": "^0.21.1", + "localforage": "^1.9.0" }, "release-it": { "git": { diff --git a/src/lib/UserStore.js b/src/lib/UserStore.js new file mode 100644 index 0000000..8e7a1e1 --- /dev/null +++ b/src/lib/UserStore.js @@ -0,0 +1,61 @@ +import { writable } from 'svelte/store'; +import localForage from 'localforage'; + +const userStore = () => { + const state = { + token: undefined, + username: undefined, + isLoggedIn: false, + refreshInterval: undefined + }; + + const { subscribe, set, update } = writable(state); + + const methods = { + init() { + localForage.config({ + name: 'linkylinky', + version: 1.0, + storeName: 'linkylinky_dashboard', + description: 'linkylinky Dashboard' + }); + }, + login(authresponse) { + update((state) => { + state.token = authresponse.token; + state.isLoggedIn = true; + // + localForage.setItem("userdata", state); + // + state.refreshInterval = setInterval(() => { + //this.refreshAuth(); + // 2min + }, 2 * 60000); + // + return state; + }); + }, + logout() { + update((state) => { + state.isLoggedIn = false; + state.token = undefined; + // + clearInterval(state.refreshInterval); + state.refreshInterval = undefined; + localForage.clear(); + // + return state; + }); + location.replace("/"); + } + }; + + return { + subscribe, + set, + update, + state, + ...methods + }; +}; +export default userStore(); \ No newline at end of file diff --git a/src/routes/__layout.svelte b/src/routes/__layout.svelte index e1b6360..7e36c86 100644 --- a/src/routes/__layout.svelte +++ b/src/routes/__layout.svelte @@ -1,6 +1,15 @@
diff --git a/yarn.lock b/yarn.lock index feddab6..5d6a906 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1654,6 +1654,11 @@ ignore@^5.1.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= + import-cwd@3.0.0, import-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" @@ -1984,6 +1989,13 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +lie@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= + dependencies: + immediate "~3.0.5" + lilconfig@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.3.tgz#68f3005e921dafbd2a2afb48379986aa6d2579fd" @@ -1994,6 +2006,13 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= +localforage@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.9.0.tgz#f3e4d32a8300b362b4634cc4e066d9d00d2f09d1" + integrity sha512-rR1oyNrKulpe+VM9cYmcFn6tsHuokyVHFaCM3+osEmxaHTbEk8oQu6eGDfS6DQLWi/N67XRmB8ECG37OES368g== + dependencies: + lie "3.1.1" + lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"