Skip to content

Commit ceaceab

Browse files
committed
feat(profiles): Add update interval for rule-sets
1 parent a4df996 commit ceaceab

File tree

7 files changed

+23
-0
lines changed

7 files changed

+23
-0
lines changed

frontend/src/constant/profile.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ export const RulesConfigDefaults = (
226226
'ruleset-behavior': RulesetBehavior.Domain,
227227
'ruleset-format': RulesetFormat.Mrs,
228228
'ruleset-proxy': '',
229+
'ruleset-interval': 0,
229230
},
230231
{
231232
id: sampleID(),
@@ -238,6 +239,7 @@ export const RulesConfigDefaults = (
238239
'ruleset-behavior': RulesetBehavior.Domain,
239240
'ruleset-format': RulesetFormat.Mrs,
240241
'ruleset-proxy': ids[2],
242+
'ruleset-interval': 0,
241243
},
242244
{
243245
id: sampleID(),
@@ -251,6 +253,7 @@ export const RulesConfigDefaults = (
251253
'ruleset-behavior': RulesetBehavior.Domain,
252254
'ruleset-format': RulesetFormat.Mrs,
253255
'ruleset-proxy': ids[2],
256+
'ruleset-interval': 0,
254257
},
255258
{
256259
id: sampleID(),
@@ -264,6 +267,7 @@ export const RulesConfigDefaults = (
264267
'ruleset-behavior': RulesetBehavior.Ipcidr,
265268
'ruleset-format': RulesetFormat.Mrs,
266269
'ruleset-proxy': ids[2],
270+
'ruleset-interval': 0,
267271
},
268272
{
269273
id: sampleID(),
@@ -276,6 +280,7 @@ export const RulesConfigDefaults = (
276280
'ruleset-behavior': RulesetBehavior.Ipcidr,
277281
'ruleset-format': RulesetFormat.Mrs,
278282
'ruleset-proxy': ids[2],
283+
'ruleset-interval': 0,
279284
},
280285
{
281286
id: sampleID(),
@@ -289,6 +294,7 @@ export const RulesConfigDefaults = (
289294
'ruleset-behavior': RulesetBehavior.Domain,
290295
'ruleset-format': RulesetFormat.Mrs,
291296
'ruleset-proxy': ids[2],
297+
'ruleset-interval': 0,
292298
},
293299
{
294300
id: sampleID(),
@@ -301,6 +307,7 @@ export const RulesConfigDefaults = (
301307
'ruleset-behavior': RulesetBehavior.Domain,
302308
'ruleset-format': RulesetFormat.Mrs,
303309
'ruleset-proxy': ids[2],
310+
'ruleset-interval': 0,
304311
},
305312
{
306313
id: sampleID(),
@@ -314,6 +321,7 @@ export const RulesConfigDefaults = (
314321
'ruleset-behavior': RulesetBehavior.Domain,
315322
'ruleset-format': RulesetFormat.Mrs,
316323
'ruleset-proxy': ids[2],
324+
'ruleset-interval': 0,
317325
},
318326
{
319327
id: sampleID(),
@@ -326,6 +334,7 @@ export const RulesConfigDefaults = (
326334
'ruleset-behavior': RulesetBehavior.Domain,
327335
'ruleset-format': RulesetFormat.Mrs,
328336
'ruleset-proxy': ids[2],
337+
'ruleset-interval': 0,
329338
},
330339
]
331340

frontend/src/lang/locale/en.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ export default {
216216
'rule-set-type': 'RuleSet Type',
217217
'ruleset-name': 'Name',
218218
'ruleset-proxy': 'Proxy',
219+
'ruleset-interval': 'Interval',
219220
needGeodataMode: 'Please enable the "geodata-mode" option in the advanced settings',
220221
notFound: 'proxy group does not exist',
221222
empty: 'Ruleset list is empty',

frontend/src/lang/locale/zh.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ export default {
216216
'rule-set-type': '规则集类型',
217217
'ruleset-name': '名称',
218218
'ruleset-proxy': '下载方式',
219+
'ruleset-interval': '更新间隔',
219220
needGeodataMode: '请在高级设置中打开"GEO数据模式"',
220221
notFound: '策略组不存在',
221222
empty: '规则集列表为空',

frontend/src/stores/profiles.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ export type ProfileType = {
128128
'ruleset-behavior': RulesetBehavior
129129
'ruleset-format': RulesetFormat
130130
'ruleset-proxy': string
131+
'ruleset-interval': number
131132
}[]
132133
mixinConfig: {
133134
priority: 'mixin' | 'gui'

frontend/src/utils/generator.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ const generateRuleProviders = async (
240240
behavior: rule['ruleset-behavior'],
241241
format: rule['ruleset-format'],
242242
proxy: group?.name || 'DIRECT',
243+
interval: rule['ruleset-interval'],
243244
}
244245
} else if (rule['ruleset-type'] === 'inline') {
245246
providers[rule['ruleset-name']] = {

frontend/src/utils/restorer.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export const restoreProfile = (
4444
'ruleset-behavior': RulesetBehavior.Domain,
4545
'ruleset-format': RulesetFormat.Mrs,
4646
'ruleset-proxy': '',
47+
'ruleset-interval': 0,
4748
},
4849
],
4950
mixinConfig: MixinConfigDefaults(),
@@ -152,6 +153,7 @@ export const restoreProfile = (
152153
'ruleset-type': provider.type || 'http',
153154
'ruleset-name': payload,
154155
'ruleset-proxy': 'DIRECT',
156+
'ruleset-interval': provider.interval ?? 0,
155157
})
156158
return
157159
}
@@ -171,6 +173,7 @@ export const restoreProfile = (
171173
'ruleset-type': 'http',
172174
'ruleset-name': '',
173175
'ruleset-proxy': '',
176+
'ruleset-interval': 0,
174177
})
175178
})
176179
}

frontend/src/views/ProfilesView/components/RulesConfig.vue

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ const fields = ref<ProfileType['rulesConfig'][number]>({
3636
'ruleset-behavior': RulesetBehavior.Domain,
3737
'ruleset-format': RulesetFormat.Mrs,
3838
'ruleset-proxy': '',
39+
'ruleset-interval': 0,
3940
})
4041
4142
const proxyOptions = computed(() => [
@@ -80,6 +81,7 @@ const handleAdd = () => {
8081
'ruleset-behavior': RulesetBehavior.Domain,
8182
'ruleset-format': RulesetFormat.Mrs,
8283
'ruleset-proxy': '',
84+
'ruleset-interval': 0,
8385
}
8486
showModal.value = true
8587
}
@@ -98,6 +100,7 @@ const handleAddInsertionPoint = () => {
98100
'ruleset-behavior': RulesetBehavior.Domain,
99101
'ruleset-format': RulesetFormat.Mrs,
100102
'ruleset-proxy': '',
103+
'ruleset-interval': 0,
101104
})
102105
}
103106
@@ -264,6 +267,10 @@ const showLost = () => message.warn('kernel.rules.notFound')
264267
{{ t('kernel.rules.ruleset-proxy') }}
265268
<Select v-model="fields['ruleset-proxy']" :options="proxyOptions" />
266269
</div>
270+
<div class="form-item">
271+
{{ t('kernel.rules.ruleset-interval') }}
272+
<Input v-model="fields['ruleset-interval']" type="number" />
273+
</div>
267274
</template>
268275

269276
<template v-if="fields.type === RuleType.RuleSet && fields['ruleset-type'] === 'inline'">

0 commit comments

Comments
 (0)