Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "sub-store-front-end",
"version": "2.15.56",
"version": "2.15.60",
"private": true,
"scripts": {
"dev": "vite --host",
Expand Down
1 change: 1 addition & 0 deletions src/assets/icons/githubProxy.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions src/locales/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -591,12 +591,14 @@ export default {
haveNotDownload: "Not download yet",
githubUser: "Please input GitHub username",
gistToken: "Please input Gist Token",
githubProxy: "Please input GitHub Proxy",
defaultUserAgent: "Please input Default User-Agent",
defaultProxy: "Please input Default Proxy/Policy",
defaultTimeout: "Default Timeout (in milliseconds, default: 8000)",
cacheThreshold: "Cache Threshold (in KB, default: 1024)",
noGithubUser: "Not set GitHub username",
noGistToken: "Not set Gist Token",
noGithubProxy: "Not set GitHub Proxy",
noDefaultUserAgent: "Not set default user-agent",
noDefaultProxy: "Not set default proxy/policy",
noDefaultTimeout: "Not set default timeout",
Expand Down
2 changes: 2 additions & 0 deletions src/locales/zh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -586,12 +586,14 @@ export default {
haveNotDownload: '暂无下载记录',
githubUser: '请输入 GitHub 用户名',
gistToken: '请输入 GitHub 令牌',
githubProxy: '请输入 GitHub 加速代理',
defaultUserAgent: '请输入默认 User-Agent',
defaultProxy: '请输入默认代理/策略',
defaultTimeout: '默认超时(单位: 毫秒, 默认: 8000)',
cacheThreshold: '缓存阈值(单位: KB, 默认: 1024)',
noGithubUser: '未配置 GitHub 用户名',
noGistToken: '未配置 GitHub 令牌',
noGithubProxy: '未配置 GitHub 加速代理',
noDefaultUserAgent: '未配置默认 User-Agent',
noDefaultProxy: '未配置默认代理/策略',
noDefaultTimeout: '未配置默认超时',
Expand Down
2 changes: 1 addition & 1 deletion src/router/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ const router = createRouter({
},
},
{
path: '/share/manage',
path: '/shares',
component: ShareManage,
meta: {
title: 'shareManage',
Expand Down
3 changes: 3 additions & 0 deletions src/store/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export const useSettingsStore = defineStore("settingsStore", {
return {
syncPlatform: "",
gistToken: "",
githubProxy: "",
githubUser: "",
defaultUserAgent: "",
defaultProxy: "",
Expand Down Expand Up @@ -58,6 +59,7 @@ export const useSettingsStore = defineStore("settingsStore", {
if (res?.data?.status === "success" && res?.data?.data) {
this.syncPlatform = res.data.data.syncPlatform || "";
this.gistToken = res.data.data.gistToken || "";
this.githubProxy = res.data.data.githubProxy || "";
this.githubUser = res.data.data.githubUser || "";
this.defaultProxy = res.data.data.defaultProxy || "";
this.defaultUserAgent = res.data.data.defaultUserAgent || "";
Expand Down Expand Up @@ -100,6 +102,7 @@ export const useSettingsStore = defineStore("settingsStore", {
if (res?.data?.status === "success" && res?.data?.data) {
this.syncPlatform = res.data.data.syncPlatform || "";
this.gistToken = res.data.data.gistToken || "";
this.githubProxy = res.data.data.githubProxy || "";
this.githubUser = res.data.data.githubUser || "";
this.defaultProxy = res.data.data.defaultProxy || "";
this.defaultUserAgent = res.data.data.defaultUserAgent || "";
Expand Down
1 change: 1 addition & 0 deletions src/types/store/settings.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ interface SettingsBase {
interface SettingsPostData {
syncPlatform?: string;
gistToken?: string;
githubProxy?: string;
githubUser?: string;
defaultProxy?: string;
defaultUserAgent?: string;
Expand Down
2 changes: 1 addition & 1 deletion src/views/CompareTable.vue
Original file line number Diff line number Diff line change
Expand Up @@ -562,7 +562,7 @@
}

.compare-page-wrapper {
width: 100vw;
width: 100%;
height: 100vh;
z-index: 1000;
overflow-x: hidden;
Expand Down
3 changes: 2 additions & 1 deletion src/views/FilePreview.vue
Original file line number Diff line number Diff line change
Expand Up @@ -348,7 +348,8 @@ const copyUrl = async () => {
// top: 0;
// left: 0;
// position: absolute;
width: 100vw;
width: 100%;

height: 100vh;
z-index: 1000;
overflow-x: hidden;
Expand Down
33 changes: 31 additions & 2 deletions src/views/My.vue
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,18 @@
input-align="left"
:left-icon="iconKey"
/>
<nut-input
v-if="storageType !== 'manual'"
class="input"
v-model="githubProxyInput"
:disabled="!isEditing"
:placeholder="$t(`myPage.placeholder.githubProxy`)"
type="text"
input-align="left"
:left-icon="icongithubProxy"
right-icon="tips"
@click-right-icon="githubProxyTips"
/>
<nut-input
class="input"
v-model="proxyInput"
Expand Down Expand Up @@ -275,6 +287,7 @@ import avatar from "@/assets/icons/avatar.svg?url";
import iconKey from "@/assets/icons/key-solid.png";
import iconUser from "@/assets/icons/user-solid.png";
import iconProxy from "@/assets/icons/proxy.svg";
import icongithubProxy from "@/assets/icons/githubProxy.svg";
import iconUA from "@/assets/icons/user-agent.svg";
import iconMax from "@/assets/icons/max.svg";
import iconTimeout from "@/assets/icons/timeout.svg";
Expand All @@ -298,7 +311,7 @@ const router = useRouter();
const { showNotify } = useAppNotifyStore();
const { currentUrl: host } = useHostAPI();
const settingsStore = useSettingsStore();
const { githubUser, gistToken, syncTime, avatarUrl, defaultUserAgent, defaultProxy, defaultTimeout, cacheThreshold, syncPlatform } =
const { githubUser, gistToken, syncTime, avatarUrl, defaultUserAgent, defaultProxy, defaultTimeout, cacheThreshold, syncPlatform, githubProxy } =
storeToRefs(settingsStore);

const displayAvatar = computed(() => {
Expand All @@ -316,7 +329,7 @@ const onClickAPISetting = () => {
};

const onClickShareManage = () => {
router.push(`/share/manage`);
router.push(`/shares`);
};
const onClickMore = () => {
router.push(`/settings/more`);
Expand All @@ -330,6 +343,7 @@ const onClickAbout = () => {
const syncPlatformInput = ref("");
const userInput = ref("");
const tokenInput = ref("");
const githubProxyInput = ref("");
const uaInput = ref("");
const proxyInput = ref("");
const timeoutInput = ref("");
Expand All @@ -347,6 +361,7 @@ const toggleEditMode = async () => {
syncPlatform: syncPlatformInput.value,
githubUser: userInput.value,
gistToken: tokenInput.value,
githubProxy: githubProxyInput.value,
defaultUserAgent: uaInput.value,
defaultProxy: proxyInput.value,
defaultTimeout: timeoutInput.value,
Expand All @@ -357,6 +372,7 @@ const toggleEditMode = async () => {
syncPlatformInput.value = syncPlatform.value;
userInput.value = githubUser.value;
tokenInput.value = gistToken.value;
githubProxyInput.value = githubProxy.value;
uaInput.value = defaultUserAgent.value;
proxyInput.value = defaultProxy.value;
timeoutInput.value = defaultTimeout.value;
Expand Down Expand Up @@ -400,6 +416,7 @@ const toggleSyncPlatform = () => {
const setDisplayInfo = () => {
syncPlatformInput.value = syncPlatform.value || "";
userInput.value = githubUser.value || "";
githubProxyInput.value = githubProxy.value || "";
tokenInput.value = gistToken.value
? `${gistToken.value.slice(0, 6)}************`
: "";
Expand Down Expand Up @@ -550,6 +567,18 @@ const downloadBtn = () => {
lockScroll: false,
});
}
const githubProxyTips = () => {
Dialog({
title: '请填写完整 GitHub 加速代理地址',
content: '后端需 >= 2.19.97\n\n1. 仅用于上传/下载 Gist 和获取 GitHub 头像\n\n2. 请填写完整 如 https://a.com\n\n3. 需支持代理 https://api.github.com\n\n测试方式:\n浏览器打开\nhttps://a.com/https://api.github.com/users/xream\n有正常的响应\n\n4. 使用此方式时, 自行注意安全隐私问题',
popClass: 'auto-dialog',
textAlign: 'left',
okText: 'OK',
noCancelBtn: true,
closeOnPopstate: true,
lockScroll: false,
});
};
const proxyTips = () => {
Dialog({
title: '通过代理/节点/策略进行下载',
Expand Down
22 changes: 18 additions & 4 deletions src/views/SubEditor.vue
Original file line number Diff line number Diff line change
Expand Up @@ -613,8 +613,9 @@ const padding = bottomSafeArea.value + "px";
}
};
const selectedSubs = computed(() => {
if(!Array.isArray(form.subscriptions) || form.subscriptions.length === 0) return `: ${t(`editorPage.subConfig.basic.subscriptions.empty`)}`
return `: ${form.subscriptions.map((name) => {
const subscriptions = form.subscriptions || [];
if(!Array.isArray(subscriptions) || subscriptions.length === 0) return `: ${t(`editorPage.subConfig.basic.subscriptions.empty`)}`
return `: ${subscriptions.map((name) => {
const sub = subsStore.getOneSub(name);
return sub?.displayName || sub?.["display-name"] || sub.name;
}).join(', ')}`
Expand All @@ -640,7 +641,6 @@ const form = reactive<any>({
passThroughUA: false,
icon: "",
isIconColor: true,
subscriptions: [],
process: [
{
type: "Quick Setting Operator",
Expand Down Expand Up @@ -1147,6 +1147,10 @@ const urlValidator = (val: string): Promise<boolean> => {
// console.log(`${!v} -> ${v}`)
// };
const subCheckboxClick = () => {
// 确保 form.subscriptions 存在
if (!form.subscriptions) {
form.subscriptions = [];
}
// const selected = toRaw(form.subscriptions) || []
const group = subsSelectList.value.filter(item => shouldShowElement(item[3])).map(item => item[0]) || []
if (subCheckboxIndeterminate.value) {
Expand Down Expand Up @@ -1189,6 +1193,11 @@ const urlValidator = (val: string): Promise<boolean> => {
const selectedItems = [];
const unselectedItems = [];

// 确保 form.subscriptions 存在
if (!form.subscriptions) {
form.subscriptions = [];
}

// 优先添加已勾选的订阅
form.subscriptions.forEach(selectedName => {
const item = filtered.find(item => item[0] === selectedName);
Expand Down Expand Up @@ -1228,6 +1237,11 @@ const urlValidator = (val: string): Promise<boolean> => {

const newSubscriptions = [];

// 确保 form.subscriptions 存在
if (!form.subscriptions) {
form.subscriptions = [];
}

// 先按新顺序添加当前过滤列表中已选中的订阅
newFilteredOrder.forEach(name => {
if (form.subscriptions.includes(name)) {
Expand All @@ -1245,7 +1259,7 @@ const urlValidator = (val: string): Promise<boolean> => {
console.log("更新后的 form.subscriptions:", form.subscriptions);
};
watch([tag, form.subscriptions, subsSelectList], () => {
const selected = toRaw(form.subscriptions) || []
const selected = toRaw(form.subscriptions || []) || []
const group = subsSelectList.value.filter(item => shouldShowElement(item[3])).map(item => item[0]) || []
// 1. group 中不包含 selected 中的任何元素, subCheckbox 为 false, subCheckboxIndeterminate 为 false
// 2. group 中包含 selected 中的任意元素, subCheckbox 为 true, subCheckboxIndeterminate 为 true
Expand Down