Compare commits

..

No commits in common. "dfb924bb3f98ae1684e2e25e8a1aa592da29d3f1" and "1132bfd129f909b208c33940b76d699efe7579d5" have entirely different histories.

9 changed files with 30 additions and 51 deletions

View File

@ -75,11 +75,7 @@ module.exports = {
// add your custom rules here // add your custom rules here
rules: { rules: {
// VueStuff 'prefer-promise-reject-errors': 'off',
'vue/multi-word-component-names': 'off',
// Misc
'prefer-promise-reject-errors': ["error", {"allowEmptyReject": true}],
// TypeScript // TypeScript
quotes: ['warn', 'single', { avoidEscape: true }], quotes: ['warn', 'single', { avoidEscape: true }],

View File

@ -1,6 +1,6 @@
{ {
"license": "MIT", "license": "MIT",
"version": "1.0.0-alpha.2", "version": "1.0.0-alpha.1",
"name": "@flaschengeist/api", "name": "@flaschengeist/api",
"author": "Tim Gröger <flaschengeist@wu5.de>", "author": "Tim Gröger <flaschengeist@wu5.de>",
"homepage": "https://flaschengeist.dev/Flaschengeist", "homepage": "https://flaschengeist.dev/Flaschengeist",
@ -19,21 +19,21 @@
"pinia": "^2.0.0-alpha.19" "pinia": "^2.0.0-alpha.19"
}, },
"devDependencies": { "devDependencies": {
"@flaschengeist/types": "^1.0.0-alpha.4", "@flaschengeist/types": "^1.0.0-alpha.1",
"@types/node": "^12.20.37", "@types/node": "^12.20.13",
"@typescript-eslint/eslint-plugin": "^5.3.1", "@typescript-eslint/eslint-plugin": "^4.24.0",
"@typescript-eslint/parser": "^5.3.1", "@typescript-eslint/parser": "^4.24.0",
"eslint": "^8.2.0", "eslint": "^7.26.0",
"eslint-config-prettier": "^8.3.0", "eslint-config-prettier": "^8.3.0",
"eslint-plugin-vue": "^8.0.3", "eslint-plugin-vue": "^7.9.0",
"eslint-webpack-plugin": "^3.1.0", "eslint-webpack-plugin": "^2.5.4",
"prettier": "^2.4.1", "prettier": "^2.3.0",
"typescript": "^4.4.4" "typescript": "^4.2.4"
}, },
"prettier": { "prettier": {
"singleQuote": true, "singleQuote": true,
"semi": true, "semi": true,
"printWidth": 100, "printWidth": 120,
"arrowParens": "always" "arrowParens": "always"
} }
} }

View File

@ -1,23 +1,3 @@
import { AxiosError } from 'axios';
/**
* Check if error is an AxiosError, and optional if a specific status was returned
*
* @param error Thrown error to check
* @param status If set, check if this error has set thouse status code
*/
export function isAxiosError(error: unknown, status?: number) {
// Check if it is an axios error (with axios 1.0 `error instanceof AxiosError` will be possible)
if (!error || typeof error !== 'object' || !('isAxiosError' in <object>error)) return false;
// Check status code if status was given
if (status !== undefined)
return (
(<AxiosError>error).response !== undefined && (<AxiosError>error).response?.status === status
);
return true;
}
export * from './main'; export * from './main';
export * from './session'; export * from './session';
export * from './user'; export * from './user';

View File

@ -81,7 +81,7 @@ export const useMainStore = defineStore({
} catch (error) { } catch (error) {
return false; return false;
} finally { } finally {
this.handleLoggedOut(); this.handleLoggedOut( );
} }
return true; return true;
}, },

View File

@ -1,7 +1,7 @@
import { AxiosResponse } from 'axios'; import { AxiosError, AxiosResponse } from 'axios';
import { defineStore } from 'pinia'; import { defineStore } from 'pinia';
import { api } from '../internal'; import { api } from '../internal';
import { isAxiosError, useMainStore } from '.'; import { useMainStore } from '.';
export const useSessionStore = defineStore({ export const useSessionStore = defineStore({
id: 'sessions', id: 'sessions',
@ -46,8 +46,8 @@ export const useSessionStore = defineStore({
await api.delete(`/auth/${token}`); await api.delete(`/auth/${token}`);
return true; return true;
} catch (error) { } catch (error) {
// Ignore 401, as this means we are already logged out, throw all other if (!error || !('response' in error) || (<AxiosError>error).response?.status != 401)
if (!isAxiosError(error, 401)) throw error; throw error;
} }
return false; return false;
}, },

View File

@ -1,6 +1,7 @@
import { defineStore } from 'pinia'; import { defineStore } from 'pinia';
import { AxiosError } from 'axios';
import { api } from '../internal'; import { api } from '../internal';
import { isAxiosError, useMainStore } from '.'; import { useMainStore } from '.';
export const useUserStore = defineStore({ export const useUserStore = defineStore({
id: 'users', id: 'users',
@ -29,8 +30,8 @@ export const useUserStore = defineStore({
else this.users[idx] = data; else this.users[idx] = data;
return data; return data;
} catch (error) { } catch (error) {
// Ignore 404, throw all other if (!error || !('response' in error) || (<AxiosError>error).response?.status !== 404)
if (!isAxiosError(error, 404)) throw error; throw error;
} }
} else { } else {
return this.users[idx]; return this.users[idx];

View File

@ -1,9 +1,9 @@
/* eslint-disable */ /* eslint-disable */
// THIS FEATURE-FLAG FILE IS AUTOGENERATED, // THIS FEATURE-FLAG FILE IS AUTOGENERATED,
// REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING // REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING
import 'quasar/dist/types/feature-flag'; import "quasar/dist/types/feature-flag";
declare module 'quasar/dist/types/feature-flag' { declare module "quasar/dist/types/feature-flag" {
interface QuasarFeatureFlags { interface QuasarFeatureFlags {
cordova: true; cordova: true;
} }

View File

@ -1,9 +1,9 @@
/* eslint-disable */ /* eslint-disable */
// THIS FEATURE-FLAG FILE IS AUTOGENERATED, // THIS FEATURE-FLAG FILE IS AUTOGENERATED,
// REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING // REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING
import 'quasar/dist/types/feature-flag'; import "quasar/dist/types/feature-flag";
declare module 'quasar/dist/types/feature-flag' { declare module "quasar/dist/types/feature-flag" {
interface QuasarFeatureFlags { interface QuasarFeatureFlags {
electron: true; electron: true;
} }

View File

@ -1,4 +1,4 @@
import { computed } from 'vue'; import {computed} from 'vue';
import { LocalStorage } from 'quasar'; import { LocalStorage } from 'quasar';
const config = { const config = {
@ -6,7 +6,9 @@ const config = {
pollingInterval: 30000, pollingInterval: 30000,
}; };
const baseURL = computed(() => LocalStorage.getItem<string>('baseURL') || config.baseURL); const baseURL = computed(() =>
LocalStorage.getItem<string>('baseURL') || config.baseURL
);
export { baseURL }; export {baseURL}
export default config; export default config;