aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extension/src/features/permissions.ts24
1 files changed, 16 insertions, 8 deletions
diff --git a/extension/src/features/permissions.ts b/extension/src/features/permissions.ts
index 82b023f..1ffe30e 100644
--- a/extension/src/features/permissions.ts
+++ b/extension/src/features/permissions.ts
@@ -101,6 +101,17 @@ const useRuleSet = (slot: Ref<RuleSlot>) => {
defaults(slot.value, { rules: [] })
const { rules } = toRefs(slot)
+ const trimExpiredRules = () => {
+ const current = get(rules)
+ const now = Date.now()
+ const wo = filter(current, r => !r.expires || r.expires > now)
+ //see if we need to update
+ if (wo.length !== current.length) {
+ set(rules, wo)
+ }
+ return wo
+ }
+
return{
isAllowed: (request: PermissionRequest): boolean => {
//find existing rule
@@ -137,10 +148,7 @@ const useRuleSet = (slot: Ref<RuleSlot>) => {
set(rules, wo)
},
getRules:(): AutoAllowRule[] => {
- //Filter all expired rules
- const wo = filter(get(rules), r => !r.expires || r.expires > Date.now())
- set(rules, wo)
- return wo
+ return trimExpiredRules()
}
}
}
@@ -149,7 +157,7 @@ const usePermissions = (slot: Ref<PermissionSlot>, rules: ReturnType<typeof useR
const permPopupUrl = runtime.getURL("src/entries/contentScript/auth-popup.html")
- defaults(slot.value, { rules: [] })
+ defaults(slot.value, { requests: [] })
const { requests } = toRefs(slot)
const activePopups = new Map<number, PermissionRequest>()
@@ -235,7 +243,7 @@ const usePermissions = (slot: Ref<PermissionSlot>, rules: ReturnType<typeof useR
//set denied
(req as Mutable<PermissionRequest>).status = PrStatus.Denied
//popup closed, set to denied
- updateRequest(req, false)
+ updateRequest(req, CreateRuleType.AllowOnce)
}
})
@@ -248,7 +256,7 @@ const usePermissions = (slot: Ref<PermissionSlot>, rules: ReturnType<typeof useR
const pending = filter(requests.value, r => r.status == PrStatus.Pending && r.origin == origin)
//update all pending requests to denied
- forEach(pending, r => updateRequest(r, false))
+ forEach(pending, r => updateRequest(r, CreateRuleType.AllowOnce))
})
return{
@@ -333,7 +341,7 @@ export const usePermissionApi = (): IFeatureExport<AppSettings, PermissionApi> =
const permissions = usePermissions(reqStore, ruleSet)
//Computed current time to trigger an update every second
- const currentTime = useTimestamp({ interval: 1000 })
+ const currentTime = useTimestamp({ interval: 2000 })
return {
waitForChange: waitForChangeFn([currentConfig, loggedIn, reqStore, ruleStore, currentTime]),