Skip to content

Commit

Permalink
fix: support import others url
Browse files Browse the repository at this point in the history
  • Loading branch information
lisonge committed Jun 28, 2024
1 parent 8bf279e commit f7c5c3d
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 16 deletions.
6 changes: 6 additions & 0 deletions src/utils/url.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,9 @@ export const githubUrlToSelfUrl = (u: string): string => {
);
}
};

export const isValidUrl = (url: string): URL | undefined => {
try {
return new URL(url);
} catch {}
};
38 changes: 22 additions & 16 deletions src/views/ImportPage.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { gmOk } from '@/utils/gm';
import { importFromNetwork } from '@/utils/import';
import { delay, filterQuery } from '@/utils/others';
import { importStorage, snapshotStorage, urlStorage } from '@/utils/storage';
import { getImportFileUrl, getImportId } from '@/utils/url';
import { getImportFileUrl, getImportId, isValidUrl } from '@/utils/url';
import { onMounted, shallowRef } from 'vue';
import { useRoute, useRouter } from 'vue-router';
Expand All @@ -23,39 +23,45 @@ const goToSnapshot = async (snapshotId: number) => {
});
};
const url = String(route.query.url || ``);
const importId = getImportId(url);
onMounted(async () => {
const importId = getImportId(String(route.query.url || ``));
if (!importId) {
if (!isValidUrl(url)) {
message.error(`非法URL参数`);
await delay(1000);
router.replace({
path: `/`,
});
return;
}
await delay(1000);
const snapshotId = urlStorage[importId];
if (snapshotId) {
const snapshot = await snapshotStorage.getItem(snapshotId);
if (snapshot) {
goToSnapshot(snapshotId);
return;
} else {
delete urlStorage[importId];
if (importId) {
const snapshotId = urlStorage[importId];
if (snapshotId) {
const snapshot = await snapshotStorage.getItem(snapshotId);
if (snapshot) {
goToSnapshot(snapshotId);
return;
} else {
delete urlStorage[importId];
}
}
}
loadingBar.start();
try {
const [result] =
(await importFromNetwork(getImportFileUrl(importId))) ?? [];
(await importFromNetwork(importId ? getImportFileUrl(importId) : url)) ??
[];
if (result.status == 'fulfilled') {
loadingBar.finish();
const snapshot = result.value;
if (snapshot?.id) {
detectSnapshot(importId);
urlStorage[importId] = snapshot.id;
importStorage[snapshot.id] = importId;
if (importId) {
detectSnapshot(importId);
urlStorage[importId] = snapshot.id;
importStorage[snapshot.id] = importId;
}
loading.value = false;
await delay(500);
goToSnapshot(snapshot.id);
Expand Down

0 comments on commit f7c5c3d

Please sign in to comment.