feat: git login

This commit is contained in:
archer
2023-08-07 17:19:04 +08:00
parent 206eb81bb4
commit ce729dff1f
12 changed files with 310 additions and 32 deletions

View File

@@ -1,9 +1,13 @@
import { create } from 'zustand';
import { devtools } from 'zustand/middleware';
import { devtools, persist } from 'zustand/middleware';
import { immer } from 'zustand/middleware/immer';
import axios from 'axios';
type LoginStoreType = { provider: 'git'; lastRoute: string };
type State = {
loginStore?: LoginStoreType;
setLoginStore: (e: LoginStoreType) => void;
loading: boolean;
setLoading: (val: boolean) => null;
screenWidth: number;
@@ -16,39 +20,53 @@ type State = {
export const useGlobalStore = create<State>()(
devtools(
immer((set, get) => ({
loading: false,
setLoading: (val: boolean) => {
set((state) => {
state.loading = val;
});
return null;
},
screenWidth: 600,
setScreenWidth(val: number) {
set((state) => {
state.screenWidth = val;
state.isPc = val < 900 ? false : true;
});
},
isPc: undefined,
initIsPc(val: boolean) {
if (get().isPc !== undefined) return;
set((state) => {
state.isPc = val;
});
},
gitStar: 2700,
async loadGitStar() {
try {
const { data: git } = await axios.get('https://api.github.com/repos/labring/FastGPT');
persist(
immer((set, get) => ({
loginStore: undefined,
setLoginStore(e) {
set((state) => {
state.loginStore = e;
});
},
loading: false,
setLoading: (val: boolean) => {
set((state) => {
state.loading = val;
});
return null;
},
screenWidth: 600,
setScreenWidth(val: number) {
set((state) => {
state.screenWidth = val;
state.isPc = val < 900 ? false : true;
});
},
isPc: undefined,
initIsPc(val: boolean) {
if (get().isPc !== undefined) return;
set((state) => {
state.gitStar = git.stargazers_count;
state.isPc = val;
});
} catch (error) {}
},
gitStar: 2700,
async loadGitStar() {
try {
const { data: git } = await axios.get('https://api.github.com/repos/labring/FastGPT');
set((state) => {
state.gitStar = git.stargazers_count;
});
} catch (error) {}
}
})),
{
name: 'globalStore',
partialize: (state) => ({
loginStore: state.loginStore
})
}
}))
)
)
);