init
This commit is contained in:
		
						commit
						69b4c9116b
					
				
					 30 changed files with 3428 additions and 0 deletions
				
			
		
							
								
								
									
										28
									
								
								src/stores/account.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/stores/account.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
import apiFetch from "@/lib/api-fetch";
 | 
			
		||||
import type { Account } from "@/lib/api/entities/account";
 | 
			
		||||
import { defineStore } from "pinia";
 | 
			
		||||
import { ref } from "vue";
 | 
			
		||||
 | 
			
		||||
const localStorageKey = "vulpine-current-user";
 | 
			
		||||
const tokenKey = "vulpine-token";
 | 
			
		||||
 | 
			
		||||
export const useAccountStore = defineStore("current-user", () => {
 | 
			
		||||
	const json = localStorage.getItem(localStorageKey);
 | 
			
		||||
	const user = ref<Account>(json ? JSON.parse(json) : undefined);
 | 
			
		||||
	const token = ref(localStorage.getItem(tokenKey) || undefined);
 | 
			
		||||
 | 
			
		||||
	function setUser(meUser: Account) {
 | 
			
		||||
		user.value = meUser;
 | 
			
		||||
		localStorage.setItem(localStorageKey, JSON.stringify(user.value));
 | 
			
		||||
	}
 | 
			
		||||
	async function fetchUser() {
 | 
			
		||||
		user.value = await apiFetch<Account>("/api/v1/accounts/verify_credentials");
 | 
			
		||||
		localStorage.setItem(localStorageKey, JSON.stringify(user.value));
 | 
			
		||||
	}
 | 
			
		||||
	function setToken(newToken: string) {
 | 
			
		||||
		localStorage.setItem(tokenKey, newToken);
 | 
			
		||||
		token.value = newToken;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return { user, token, setUser, setToken, fetchUser };
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										29
									
								
								src/stores/application.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								src/stores/application.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,29 @@
 | 
			
		|||
import apiFetch from "@/lib/api-fetch";
 | 
			
		||||
import type Application from "@/lib/api/entities/application";
 | 
			
		||||
import { defineStore } from "pinia";
 | 
			
		||||
import { ref } from "vue";
 | 
			
		||||
 | 
			
		||||
const localStorageKey = "vulpine-oauth-app";
 | 
			
		||||
 | 
			
		||||
export const useAppStore = defineStore("oauth-app", () => {
 | 
			
		||||
    const json = localStorage.getItem(localStorageKey)
 | 
			
		||||
    const app = ref<Application>(json ? JSON.parse(json) : undefined);
 | 
			
		||||
 | 
			
		||||
    async function getApp() {
 | 
			
		||||
        if (app.value) return app.value;
 | 
			
		||||
 | 
			
		||||
        const resp = await apiFetch<Application>("/api/v1/apps", {
 | 
			
		||||
            method: "POST",
 | 
			
		||||
            body: {
 | 
			
		||||
                client_name: "vulpine-fe",
 | 
			
		||||
                redirect_uris: `${window.location.origin}/auth/callback`,
 | 
			
		||||
                scopes: "read write follow push",
 | 
			
		||||
            }
 | 
			
		||||
        })
 | 
			
		||||
        app.value = resp;
 | 
			
		||||
        localStorage.setItem(localStorageKey, JSON.stringify(resp));
 | 
			
		||||
        return app.value;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return { app, getApp }
 | 
			
		||||
})
 | 
			
		||||
							
								
								
									
										12
									
								
								src/stores/counter.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/stores/counter.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
import { ref, computed } from "vue";
 | 
			
		||||
import { defineStore } from "pinia";
 | 
			
		||||
 | 
			
		||||
export const useCounterStore = defineStore("counter", () => {
 | 
			
		||||
	const count = ref(0);
 | 
			
		||||
	const doubleCount = computed(() => count.value * 2);
 | 
			
		||||
	function increment() {
 | 
			
		||||
		count.value++;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return { count, doubleCount, increment };
 | 
			
		||||
});
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue