🐛 (refresh) refresh correct token
This commit is contained in:
37
src/modules/repo/services/octo.ts
Normal file
37
src/modules/repo/services/octo.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import { useGitHubLogin } from '@/hooks/useGitHubLogin.hook'
|
||||
import { needToRefreshToken, refreshToken } from '@/modules/user/service/signIn'
|
||||
import { Octokit } from '@octokit/rest'
|
||||
|
||||
let refreshingToken = false
|
||||
let octokit = new Octokit()
|
||||
|
||||
const sleep = async (ms: number) => {
|
||||
return new Promise((resolve) => setTimeout(resolve, ms))
|
||||
}
|
||||
|
||||
export const getOctokit = async (): Promise<Octokit> => {
|
||||
const { accessToken } = useGitHubLogin()
|
||||
octokit = new Octokit({
|
||||
auth: accessToken.value
|
||||
})
|
||||
|
||||
if (refreshingToken) {
|
||||
await sleep(100)
|
||||
return getOctokit()
|
||||
}
|
||||
|
||||
if (!refreshingToken) {
|
||||
refreshingToken = true
|
||||
if (await needToRefreshToken()) {
|
||||
const accessToken = await refreshToken()
|
||||
if (accessToken) {
|
||||
octokit = new Octokit({
|
||||
auth: accessToken?.token
|
||||
})
|
||||
}
|
||||
}
|
||||
refreshingToken = false
|
||||
}
|
||||
|
||||
return octokit
|
||||
}
|
||||
@@ -1,10 +1,8 @@
|
||||
import { useGitHubLogin } from '@/hooks/useGitHubLogin.hook'
|
||||
import { useMarkdown } from '@/hooks/useMarkdown.hook'
|
||||
import { useNoteCache } from '@/modules/note/hooks/useNoteCache'
|
||||
import { RepoFile } from '@/modules/repo/interfaces/RepoFile'
|
||||
import { UserSettings } from '@/modules/repo/interfaces/UserSettings'
|
||||
import { refreshToken } from '@/modules/user/service/signIn'
|
||||
import { Octokit } from '@octokit/rest'
|
||||
import { getOctokit } from '@/modules/repo/services/octo'
|
||||
|
||||
export const getFiles = async (
|
||||
owner: string,
|
||||
@@ -13,13 +11,7 @@ export const getFiles = async (
|
||||
if (!owner || !repo) {
|
||||
return []
|
||||
}
|
||||
await refreshToken()
|
||||
|
||||
const { accessToken } = useGitHubLogin()
|
||||
|
||||
const octokit = new Octokit({
|
||||
auth: accessToken.value
|
||||
})
|
||||
const octokit = await getOctokit()
|
||||
|
||||
const commits = await octokit.request('GET /repos/{owner}/{repo}/commits', {
|
||||
owner,
|
||||
@@ -56,11 +48,7 @@ export const getMainReadme = async (owner: string, repo: string) => {
|
||||
const cachedReadme = await getCachedNote()
|
||||
|
||||
try {
|
||||
await refreshToken()
|
||||
const { accessToken } = useGitHubLogin()
|
||||
const octokit = new Octokit({
|
||||
auth: accessToken.value
|
||||
})
|
||||
const octokit = await getOctokit()
|
||||
|
||||
const README = await octokit.repos.getReadme({
|
||||
owner,
|
||||
@@ -105,12 +93,7 @@ export const getFileContent = async (
|
||||
repo: string,
|
||||
sha: string
|
||||
) => {
|
||||
await refreshToken()
|
||||
const { accessToken } = useGitHubLogin()
|
||||
|
||||
const octokit = new Octokit({
|
||||
auth: accessToken.value
|
||||
})
|
||||
const octokit = await getOctokit()
|
||||
|
||||
if (!user || !repo) {
|
||||
null
|
||||
|
||||
@@ -28,10 +28,8 @@ export const useUserRepoStore = defineStore({
|
||||
async setUserRepo(newUser: string, newRepo: string) {
|
||||
this.user = newUser
|
||||
this.repo = newRepo
|
||||
const [readme, files] = await Promise.all([
|
||||
getMainReadme(newUser, newRepo),
|
||||
getFiles(newUser, newRepo)
|
||||
])
|
||||
const readme = await getMainReadme(newUser, newRepo)
|
||||
const files = await getFiles(newUser, newRepo)
|
||||
this.userSettings = await getUserSettingsContent(newUser, newRepo, files)
|
||||
|
||||
this.readme = readme
|
||||
|
||||
Reference in New Issue
Block a user