fix: update GitHub card paths lookup (#1563)

This commit is contained in:
Svyatoslav Kryukov 2023-02-01 22:14:23 +03:00 committed by GitHub
parent a287284664
commit a025b3b434
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 17 deletions

View file

@ -1,5 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import type { mastodon } from 'masto' import type { mastodon } from 'masto'
import reservedNames from 'github-reserved-names'
const props = defineProps<{ const props = defineProps<{
card: mastodon.v1.PreviewCard card: mastodon.v1.PreviewCard
@ -20,24 +21,22 @@ interface Meta {
} }
} }
const specialRoutes = ['orgs', 'sponsors', 'stars'] // Supported paths
// /user
// /user/repo
// /user/repo/issues/number
// /user/repo/pull/number
// /sponsors/user
const supportedReservedRoutes = ['sponsors']
const meta = $computed(() => { const meta = $computed(() => {
const { url } = props.card const { url } = props.card
const path = url.split('https://github.com/')[1] const path = url.split('https://github.com/')[1]
const [firstName, secondName] = path?.split('/') || []
if (!firstName || (reservedNames.check(firstName) && !supportedReservedRoutes.includes(firstName)))
return undefined
// Supported paths const firstIsUser = firstName && !supportedReservedRoutes.includes(firstName)
// /user
// /user/repo
// /user/repo/issues/number
// /user/repo/pull/number
// /orgs/user
// /sponsors/user
// /stars/user
const firstName = path.match(/([\w-]+)(\/|$)/)?.[1]
const secondName = path.match(/[\w-]+\/([\w-]+)/)?.[1]
const firstIsUser = firstName && !specialRoutes.includes(firstName)
const user = firstIsUser ? firstName : secondName const user = firstIsUser ? firstName : secondName
const repo = firstIsUser ? secondName : undefined const repo = firstIsUser ? secondName : undefined
@ -86,7 +85,7 @@ const meta = $computed(() => {
<template> <template>
<div <div
v-if="card.image" v-if="card.image && meta"
flex flex-col flex flex-col
display-block of-hidden display-block of-hidden
bg-card bg-card
@ -132,4 +131,5 @@ const meta = $computed(() => {
</div> </div>
</div> </div>
</div> </div>
<StatusPreviewCardNormal v-else :card="card" />
</template> </template>

View file

@ -49,6 +49,7 @@
"focus-trap": "^7.2.0", "focus-trap": "^7.2.0",
"form-data": "^4.0.0", "form-data": "^4.0.0",
"fuse.js": "^6.6.2", "fuse.js": "^6.6.2",
"github-reserved-names": "^2.0.4",
"idb-keyval": "^6.2.0", "idb-keyval": "^6.2.0",
"iso-639-1": "^2.1.15", "iso-639-1": "^2.1.15",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",

View file

@ -83,6 +83,7 @@ importers:
form-data: ^4.0.0 form-data: ^4.0.0
fs-extra: ^11.1.0 fs-extra: ^11.1.0
fuse.js: ^6.6.2 fuse.js: ^6.6.2
github-reserved-names: ^2.0.4
idb-keyval: ^6.2.0 idb-keyval: ^6.2.0
iso-639-1: ^2.1.15 iso-639-1: ^2.1.15
js-yaml: ^4.1.0 js-yaml: ^4.1.0
@ -147,6 +148,7 @@ importers:
focus-trap: 7.2.0 focus-trap: 7.2.0
form-data: 4.0.0 form-data: 4.0.0
fuse.js: 6.6.2 fuse.js: 6.6.2
github-reserved-names: 2.0.4
idb-keyval: 6.2.0 idb-keyval: 6.2.0
iso-639-1: 2.1.15 iso-639-1: 2.1.15
js-yaml: 4.1.0 js-yaml: 4.1.0
@ -157,7 +159,7 @@ importers:
shiki-es: 0.2.0 shiki-es: 0.2.0
slimeform: 0.9.0 slimeform: 0.9.0
string-length: 5.0.1 string-length: 5.0.1
tauri-plugin-log-api: github.com/tauri-apps/tauri-plugin-log/9d2a19ad05fafeb80991006e14f0f95fe1109aba tauri-plugin-log-api: github.com/tauri-apps/tauri-plugin-log/33d9b712e9058ed82c110cb186345215f82b88e2
tauri-plugin-store-api: github.com/tauri-apps/tauri-plugin-store/c71665bf5dcf48ae70a88d622eb38b2548b60a5d tauri-plugin-store-api: github.com/tauri-apps/tauri-plugin-store/c71665bf5dcf48ae70a88d622eb38b2548b60a5d
tiny-decode: 0.1.3 tiny-decode: 0.1.3
tippy.js: 6.3.7 tippy.js: 6.3.7
@ -7149,6 +7151,10 @@ packages:
git-up: 7.0.0 git-up: 7.0.0
dev: true dev: true
/github-reserved-names/2.0.4:
resolution: {integrity: sha512-T2azXbRJTJGQc28G6x89LpzQmuVjzl0hzJXPRD2t9yMh7URYUW8Opqr5ptHvjAVDJ+hwhBtoYmVx3VyFawRoFg==}
dev: false
/github-slugger/2.0.0: /github-slugger/2.0.0:
resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
dev: true dev: true
@ -13269,8 +13275,8 @@ packages:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
dev: true dev: true
github.com/tauri-apps/tauri-plugin-log/9d2a19ad05fafeb80991006e14f0f95fe1109aba: github.com/tauri-apps/tauri-plugin-log/33d9b712e9058ed82c110cb186345215f82b88e2:
resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-log/tar.gz/9d2a19ad05fafeb80991006e14f0f95fe1109aba} resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-log/tar.gz/33d9b712e9058ed82c110cb186345215f82b88e2}
name: tauri-plugin-log-api name: tauri-plugin-log-api
version: 0.0.0 version: 0.0.0
dependencies: dependencies: