Compare commits

...

2 Commits

7 changed files with 43 additions and 34 deletions

View File

@ -1,35 +1,35 @@
import { LocalStorage, Platform } from 'quasar'; import { LocalStorage, Platform } from 'quasar';
import { Storage } from '@capacitor/storage'; import { Preferences } from '@capacitor/preferences';
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
type PersitentTypes = Date | RegExp | number | boolean | string | object; type PersitentTypes = Date | RegExp | number | boolean | string | object;
export class PersistentStorage { export class PersistentStorage {
static clear() { static clear() {
if (Platform.is.capacitor) return Storage.clear(); if (Platform.is.capacitor) return Preferences.clear();
else return Promise.resolve(LocalStorage.clear()); else return Promise.resolve(LocalStorage.clear());
} }
static remove(key: string) { static remove(key: string) {
if (Platform.is.capacitor) return Storage.remove({ key: key }); if (Platform.is.capacitor) return Preferences.remove({ key: key });
else return Promise.resolve(LocalStorage.remove(key)); else return Promise.resolve(LocalStorage.remove(key));
} }
static set(key: string, value: PersitentTypes) { static set(key: string, value: PersitentTypes) {
if (Platform.is.capacitor) return Storage.set({ key, value: JSON.stringify(value) }); if (Platform.is.capacitor) return Preferences.set({ key, value: JSON.stringify(value) });
else return Promise.resolve(LocalStorage.set(key, value)); else return Promise.resolve(LocalStorage.set(key, value));
} }
static get<T extends PersitentTypes>(key: string) { static get<T extends PersitentTypes>(key: string) {
if (Platform.is.capacitor) if (Platform.is.capacitor)
return Storage.get({ key }).then((v) => return Preferences.get({ key }).then((v) =>
v.value === null ? null : (JSON.parse(v.value) as T) v.value === null ? null : (JSON.parse(v.value) as T)
); );
else return Promise.resolve(LocalStorage.getItem<T>(key)); else return Promise.resolve(LocalStorage.getItem<T>(key));
} }
static keys() { static keys() {
if (Platform.is.capacitor) return Storage.keys().then((v) => v.keys); if (Platform.is.capacitor) return Preferences.keys().then((v) => v.keys);
else return Promise.resolve(LocalStorage.getAllKeys()); else return Promise.resolve(LocalStorage.getAllKeys());
} }
} }

View File

@ -3,14 +3,7 @@
"target": "esnext", "target": "esnext",
"compilerOptions": { "compilerOptions": {
"baseUrl": "./", "baseUrl": "./",
"lib": [ "lib": ["es2020", "dom"],
"es2020", "types": ["@flaschengeist/types", "@quasar/app", "node"]
"dom" }
],
"types": [
"@flaschengeist/types",
"@quasar/app",
"node"
]
}
} }

View File

@ -16,23 +16,26 @@
}, },
"dependencies": { "dependencies": {
"@flaschengeist/api": "file:./api", "@flaschengeist/api": "file:./api",
"@flaschengeist/users": "^1.0.0-alpha.3",
"@flaschengeist/schedule": "^1.0.0-alpha.6", "@flaschengeist/schedule": "^1.0.0-alpha.6",
"@flaschengeist/users": "^1.0.0-alpha.3",
"axios": "^0.24.0", "axios": "^0.24.0",
"pinia": "^2.0.8", "pinia": "^2.0.8",
"quasar": "^2.3.4" "quasar": "^2.11.10",
"vue": "^3.0.0",
"vue-router": "^4.0.0"
}, },
"devDependencies": { "devDependencies": {
"@capacitor/core": "^3.3.3", "@capacitor/core": "^5.0.0",
"@capacitor/storage": "^1.2.3", "@capacitor/preferences": "^5.0.0",
"@flaschengeist/types": "^1.0.0-alpha.10", "@flaschengeist/types": "^1.0.0-alpha.10",
"@quasar/app": "^3.2.5", "@quasar/app-webpack": "^3.7.2",
"@quasar/extras": "^1.12.2", "@quasar/extras": "^1.16.3",
"@types/node": "^14.18.0", "@types/node": "^14.18.0",
"@types/webpack": "^5.28.0", "@types/webpack": "^5.28.0",
"@types/webpack-env": "^1.16.3", "@types/webpack-env": "^1.16.3",
"@typescript-eslint/eslint-plugin": "^5.8.0", "@typescript-eslint/eslint-plugin": "^5.8.0",
"@typescript-eslint/parser": "^5.8.0", "@typescript-eslint/parser": "^5.8.0",
"@vue/devtools": "^6.5.0",
"eslint": "^8.5.0", "eslint": "^8.5.0",
"eslint-config-prettier": "^8.3.0", "eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^4.0.0", "eslint-plugin-prettier": "^4.0.0",

View File

@ -4,6 +4,9 @@
"bundledWebRuntime": false, "bundledWebRuntime": false,
"npmClient": "yarn", "npmClient": "yarn",
"webDir": "www", "webDir": "www",
"android": {
"minWebViewVersion": 71
},
"ios": { "ios": {
"allowsLinkPreview": false "allowsLinkPreview": false
} }

View File

@ -5,12 +5,12 @@
"author": "Tim Gröger <flaschengeist@wu5.de>", "author": "Tim Gröger <flaschengeist@wu5.de>",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@capacitor/android": "^3.3.2", "@capacitor/android": "^5.0.0-beta.0",
"@capacitor/app": "^1.0.0", "@capacitor/app": "^5.0.0",
"@capacitor/cli": "^3.0.0", "@capacitor/cli": "^5.0.0",
"@capacitor/core": "^3.0.0", "@capacitor/core": "^5.0.0",
"@capacitor/ios": "^3.0.0-beta.0", "@capacitor/ios": "^5.0.0",
"@capacitor/splash-screen": "^1.0.0", "@capacitor/preferences": "^5.0.0",
"@capacitor/storage": "^1.2.3" "@capacitor/splash-screen": "^5.0.0"
} }
} }

View File

@ -21,8 +21,8 @@ async function loadBaseUrl() {
console.warn('Could not load BaseURL', e); console.warn('Could not load BaseURL', e);
} }
} }
// eslint-disable-next-line
class BackendError extends Error {} class BackendError extends Error { }
/** /**
* Loading backend information * Loading backend information
@ -68,8 +68,18 @@ export default boot(async ({ app, router }) => {
// Handle errors from loading the backend information // Handle errors from loading the backend information
if (error instanceof BackendError || isAxiosError(error)) { if (error instanceof BackendError || isAxiosError(error)) {
router.isReady().finally(() => { router.isReady().finally(() => {
if (Platform.is.capacitor) void router.push({ name: 'setup_backend' }); // if (Platform.is.capacitor) void router.push({ name: 'setup_backend' });
else void router.push({ name: 'offline', params: { refresh: 1 } }); if (Platform.is.capacitor) {
//void router.push({ name: 'setup_backend' })
Notify.create({
type: 'negative',
message:
'Backend nicht erreichbar! Prüfe deine Internetverbindung oder probiere es später nochmal.',
timeout: 0,
icon: 'mdi-alert-circle-outline',
closeBtn: true,
});
} else void router.push({ name: 'offline', params: { refresh: 1 } });
}); });
} else if (typeof error === 'string') { } else if (typeof error === 'string') {
// Handle plugin not found errors // Handle plugin not found errors

View File

@ -1,5 +1,5 @@
{ {
"extends": "@quasar/app/tsconfig-preset", "extends": "@quasar/app-webpack/tsconfig-preset",
"target": "esnext", "target": "esnext",
"compilerOptions": { "compilerOptions": {
"baseUrl": ".", "baseUrl": ".",