(login) save login

This commit is contained in:
2021-03-17 23:25:58 +01:00
parent 6f5ea41824
commit 2faabb6c0e
13 changed files with 255 additions and 29 deletions

View File

@@ -0,0 +1,52 @@
import { computed, ref } from 'vue'
import { DataType } from '@/data/DataType.enum'
import { GithubAccessToken } from '@/data/models/GithubAccessToken'
import { data } from '@/data/data'
const personalAccessTokenId = 'PAT'
const username = ref<string | null>(null)
const accessToken = ref<string | null>(null)
let init = true
export const useGitHubLogin = () => {
const getAccessToken = async () => {
const response = await data.get<
DataType.GithubAccessToken,
GithubAccessToken
>(data.generateId(DataType.GithubAccessToken, personalAccessTokenId))
username.value = response?.username || ''
accessToken.value = response?.personalAccessToken || ''
return response
}
if (init) {
init = false
getAccessToken()
}
const saveCredentials = async (username: string, token: string) => {
const actualPAT = await getAccessToken()
const personalAccessToken: GithubAccessToken = {
...actualPAT,
_id: data.generateId(DataType.GithubAccessToken, personalAccessTokenId),
$type: DataType.GithubAccessToken,
username,
personalAccessToken: token
}
await data.add(personalAccessToken)
getAccessToken()
}
return {
isLogged: !!username.value && !!accessToken.value,
isReady: computed(() => accessToken.value !== null),
username,
accessToken,
saveCredentials
}
}

View File

@@ -10,13 +10,12 @@ export const useQueryStackedNotes = () => {
const { query } = useRoute()
if (initial) {
initial = false
stackedNotes.value = Array.isArray(query.stackedNotes)
? (query.stackedNotes
.map((n) => n?.toString())
.filter((n) => !!n) as string[])
: ([query.stackedNotes]
.map((n) => n?.toString())
.filter((n) => !!n) as string[])
stackedNotes.value = (Array.isArray(query.stackedNotes)
? query.stackedNotes
: [query.stackedNotes]
)
.map((n) => n?.toString())
.filter((n) => !!n) as string[]
}
return {

View File

@@ -1,6 +1,7 @@
import { Ref, onMounted, ref, watch } from '@vue/runtime-core'
import { request } from '@octokit/request'
import { Octokit } from '@octokit/rest'
import { useGitHubLogin } from '@/hooks/useGitHubLogin.hook'
import { useMarkdown } from '@/hooks/useMarkdown.hook'
interface Tree {
@@ -13,6 +14,12 @@ interface Tree {
}
export const useRepo = (owner: Ref<string>, repo: Ref<string>) => {
const { accessToken } = useGitHubLogin()
const octokit = new Octokit({
auth: accessToken.value
})
const { render } = useMarkdown()
const readme = ref<string | null>(null)
const notFound = ref(false)
@@ -24,19 +31,22 @@ export const useRepo = (owner: Ref<string>, repo: Ref<string>) => {
}
try {
const README = await request('GET /repos/{owner}/{repo}/readme', {
repo: repo.value,
owner: owner.value
const README = await octokit.repos.getReadme({
owner: owner.value,
repo: repo.value
})
if (README) {
readme.value = render(README.data.content)
}
const commits = await request('GET /repos/{owner}/{repo}/commits', {
repo: repo.value,
owner: owner.value
})
const commits = await octokit.request(
'GET /repos/{owner}/{repo}/commits',
{
repo: repo.value,
owner: owner.value
}
)
const lastCommit = commits.data.shift()
@@ -44,7 +54,7 @@ export const useRepo = (owner: Ref<string>, repo: Ref<string>) => {
return
}
const treeResponse = await request(
const treeResponse = await octokit.request(
'GET /repos/{owner}/{repo}/git/trees/{tree_sha}',
{
repo: repo.value,

View File

@@ -0,0 +1,28 @@
import { Octokit } from '@octokit/rest'
import { useAsyncState } from '@vueuse/core'
import { useGitHubLogin } from '@/hooks/useGitHubLogin.hook'
export const useRepos = () => {
const { username, accessToken } = useGitHubLogin()
const repos = useAsyncState(async () => {
if (!accessToken.value || !username.value) {
return []
}
const octokit = new Octokit({
auth: accessToken.value
})
const repoList = await octokit.request('GET /search/repositories', {
q: `user:${username.value}`,
per_page: 100
})
return repoList.data.items.map((item) => item.name)
}, [])
return {
repos: repos.state,
isReady: repos.isReady
}
}