diff --git a/src/function/sync/apply-actions/cache.ts b/src/function/sync/apply-actions/cache.ts
index 1399242..3fc5a22 100644
--- a/src/function/sync/apply-actions/cache.ts
+++ b/src/function/sync/apply-actions/cache.ts
@@ -15,11 +15,12 @@
* along with this program. If not, see .
*/
-import { memoize, uniq } from 'lodash'
+import { memoize } from 'lodash'
import * as Sequelize from 'sequelize'
import { config } from '../../../config'
import { VisibleConnectedDevicesManager } from '../../../connected-devices'
import { Database } from '../../../database'
+import { setToList } from '../../../util/list'
import { generateVersionId } from '../../../util/token'
import { SourceUserNotFoundException } from './exception/illegal-state'
import { InvalidChildActionIntegrityValue } from './exception/integrity'
@@ -32,12 +33,12 @@ export class Cache {
readonly connectedDevicesManager: VisibleConnectedDevicesManager
private shouldTriggerFullSync = false
- categoriesWithModifiedApps: Array = []
- categoriesWithModifiedBaseData: Array = []
- categoriesWithModifiedTimeLimitRules: Array = []
- categoriesWithModifiedUsedTimes: Array = []
+ categoriesWithModifiedApps = new Set()
+ categoriesWithModifiedBaseData = new Set()
+ categoriesWithModifiedTimeLimitRules = new Set()
+ categoriesWithModifiedUsedTimes = new Set()
- devicesWithModifiedInstalledApps: Array = []
+ devicesWithModifiedInstalledApps = new Set()
devicesWithModifiedShowDeviceConnected = new Map()
invalidiateUserList = false
@@ -144,84 +145,84 @@ export class Cache {
async saveModifiedVersionNumbers () {
const { database, transaction, familyId } = this
- if (this.categoriesWithModifiedApps.length > 0) {
+ if (this.categoriesWithModifiedApps.size > 0) {
await database.category.update({
assignedAppsVersion: generateVersionId()
}, {
where: {
familyId,
categoryId: {
- [Sequelize.Op.in]: uniq(this.categoriesWithModifiedApps)
+ [Sequelize.Op.in]: setToList(this.categoriesWithModifiedApps)
}
},
transaction
})
- this.categoriesWithModifiedApps = []
+ this.categoriesWithModifiedApps.clear()
}
- if (this.categoriesWithModifiedBaseData.length > 0) {
+ if (this.categoriesWithModifiedBaseData.size > 0) {
await database.category.update({
baseVersion: generateVersionId()
}, {
where: {
familyId,
categoryId: {
- [Sequelize.Op.in]: uniq(this.categoriesWithModifiedBaseData)
+ [Sequelize.Op.in]: setToList(this.categoriesWithModifiedBaseData)
}
},
transaction
})
- this.categoriesWithModifiedBaseData = []
+ this.categoriesWithModifiedBaseData.clear()
}
- if (this.categoriesWithModifiedTimeLimitRules.length > 0) {
+ if (this.categoriesWithModifiedTimeLimitRules.size > 0) {
await database.category.update({
timeLimitRulesVersion: generateVersionId()
}, {
where: {
familyId,
categoryId: {
- [Sequelize.Op.in]: uniq(this.categoriesWithModifiedTimeLimitRules)
+ [Sequelize.Op.in]: setToList(this.categoriesWithModifiedTimeLimitRules)
}
},
transaction
})
- this.categoriesWithModifiedTimeLimitRules = []
+ this.categoriesWithModifiedTimeLimitRules.clear()
}
- if (this.categoriesWithModifiedUsedTimes.length > 0) {
+ if (this.categoriesWithModifiedUsedTimes.size > 0) {
await database.category.update({
usedTimesVersion: generateVersionId()
}, {
where: {
familyId,
categoryId: {
- [Sequelize.Op.in]: uniq(this.categoriesWithModifiedUsedTimes)
+ [Sequelize.Op.in]: setToList(this.categoriesWithModifiedUsedTimes)
}
},
transaction
})
- this.categoriesWithModifiedUsedTimes = []
+ this.categoriesWithModifiedUsedTimes.clear()
}
- if (this.devicesWithModifiedInstalledApps.length > 0) {
+ if (this.devicesWithModifiedInstalledApps.size > 0) {
await database.device.update({
installedAppsVersion: generateVersionId()
}, {
where: {
familyId,
deviceId: {
- [Sequelize.Op.in]: uniq(this.devicesWithModifiedInstalledApps)
+ [Sequelize.Op.in]: setToList(this.devicesWithModifiedInstalledApps)
}
},
transaction
})
- this.devicesWithModifiedInstalledApps = []
+ this.devicesWithModifiedInstalledApps.clear()
}
if (this.invalidiateUserList) {
diff --git a/src/function/sync/apply-actions/dispatch-app-logic-action/addinstalledapps.ts b/src/function/sync/apply-actions/dispatch-app-logic-action/addinstalledapps.ts
index 3391f30..6c7d0b1 100644
--- a/src/function/sync/apply-actions/dispatch-app-logic-action/addinstalledapps.ts
+++ b/src/function/sync/apply-actions/dispatch-app-logic-action/addinstalledapps.ts
@@ -48,5 +48,5 @@ export async function dispatchAddInstalledApps ({ deviceId, action, cache }: {
{ transaction: cache.transaction }
)
- cache.devicesWithModifiedInstalledApps.push(deviceId)
+ cache.devicesWithModifiedInstalledApps.add(deviceId)
}
diff --git a/src/function/sync/apply-actions/dispatch-app-logic-action/addusedtime.ts b/src/function/sync/apply-actions/dispatch-app-logic-action/addusedtime.ts
index be1a28e..3370b19 100644
--- a/src/function/sync/apply-actions/dispatch-app-logic-action/addusedtime.ts
+++ b/src/function/sync/apply-actions/dispatch-app-logic-action/addusedtime.ts
@@ -110,10 +110,10 @@ export async function dispatchAddUsedTime ({ action, cache }: {
transaction: cache.transaction
})
- cache.categoriesWithModifiedBaseData.push(categoryId)
+ cache.categoriesWithModifiedBaseData.add(categoryId)
}
- cache.categoriesWithModifiedUsedTimes.push(categoryId)
+ cache.categoriesWithModifiedUsedTimes.add(categoryId)
}
await handleAddUsedTime({
diff --git a/src/function/sync/apply-actions/dispatch-app-logic-action/addusedtime2.ts b/src/function/sync/apply-actions/dispatch-app-logic-action/addusedtime2.ts
index 8fff885..a5854ab 100644
--- a/src/function/sync/apply-actions/dispatch-app-logic-action/addusedtime2.ts
+++ b/src/function/sync/apply-actions/dispatch-app-logic-action/addusedtime2.ts
@@ -202,7 +202,7 @@ export async function dispatchAddUsedTimeVersion2 ({ deviceId, action, cache, ev
}
}
- cache.categoriesWithModifiedUsedTimes.push(item.categoryId)
+ cache.categoriesWithModifiedUsedTimes.add(item.categoryId)
if (item.extraTimeToSubtract !== 0) {
await cache.database.category.update({
@@ -215,7 +215,7 @@ export async function dispatchAddUsedTimeVersion2 ({ deviceId, action, cache, ev
transaction: cache.transaction
})
- cache.categoriesWithModifiedBaseData.push(item.categoryId)
+ cache.categoriesWithModifiedBaseData.add(item.categoryId)
}
if (addUsedTimeForADifferentUserThanTheCurrentUserOfTheDevice) {
diff --git a/src/function/sync/apply-actions/dispatch-app-logic-action/removeinstalledapps.ts b/src/function/sync/apply-actions/dispatch-app-logic-action/removeinstalledapps.ts
index 0324e9a..03768a3 100644
--- a/src/function/sync/apply-actions/dispatch-app-logic-action/removeinstalledapps.ts
+++ b/src/function/sync/apply-actions/dispatch-app-logic-action/removeinstalledapps.ts
@@ -35,5 +35,5 @@ export async function dispatchRemoveInstalledApps ({ deviceId, action, cache }:
transaction: cache.transaction
})
- cache.devicesWithModifiedInstalledApps.push(deviceId)
+ cache.devicesWithModifiedInstalledApps.add(deviceId)
}
diff --git a/src/function/sync/apply-actions/dispatch-app-logic-action/updateappactivities.ts b/src/function/sync/apply-actions/dispatch-app-logic-action/updateappactivities.ts
index c232478..7514880 100644
--- a/src/function/sync/apply-actions/dispatch-app-logic-action/updateappactivities.ts
+++ b/src/function/sync/apply-actions/dispatch-app-logic-action/updateappactivities.ts
@@ -77,5 +77,5 @@ export async function dispatchUpdateAppActivities ({ deviceId, action, cache }:
}
}
- cache.devicesWithModifiedInstalledApps.push(deviceId)
+ cache.devicesWithModifiedInstalledApps.add(deviceId)
}
diff --git a/src/function/sync/apply-actions/dispatch-parent-action/addcategoryapps.ts b/src/function/sync/apply-actions/dispatch-parent-action/addcategoryapps.ts
index 1385b5d..141ce82 100644
--- a/src/function/sync/apply-actions/dispatch-parent-action/addcategoryapps.ts
+++ b/src/function/sync/apply-actions/dispatch-parent-action/addcategoryapps.ts
@@ -177,7 +177,7 @@ export async function dispatchAddCategoryApps ({ action, cache, fromChildSelfLim
}
)
- oldCategories.forEach((categoryId) => cache.categoriesWithModifiedApps.push(categoryId))
- cache.categoriesWithModifiedApps.push(action.categoryId)
+ oldCategories.forEach((categoryId) => cache.categoriesWithModifiedApps.add(categoryId))
+ cache.categoriesWithModifiedApps.add(action.categoryId)
cache.areChangesImportant = true
}
diff --git a/src/function/sync/apply-actions/dispatch-parent-action/addcategorynetworkid.ts b/src/function/sync/apply-actions/dispatch-parent-action/addcategorynetworkid.ts
index 5f3ddd5..f58b31d 100644
--- a/src/function/sync/apply-actions/dispatch-parent-action/addcategorynetworkid.ts
+++ b/src/function/sync/apply-actions/dispatch-parent-action/addcategorynetworkid.ts
@@ -74,6 +74,6 @@ export async function dispatchAddCategoryNetworkId ({ action, cache }: {
hashedNetworkId: action.hashedNetworkId
}, { transaction: cache.transaction })
- cache.categoriesWithModifiedBaseData.push(action.categoryId)
+ cache.categoriesWithModifiedBaseData.add(action.categoryId)
cache.areChangesImportant = true
}
diff --git a/src/function/sync/apply-actions/dispatch-parent-action/createtimelimitrule.ts b/src/function/sync/apply-actions/dispatch-parent-action/createtimelimitrule.ts
index 35a0741..9b6eb87 100644
--- a/src/function/sync/apply-actions/dispatch-parent-action/createtimelimitrule.ts
+++ b/src/function/sync/apply-actions/dispatch-parent-action/createtimelimitrule.ts
@@ -57,6 +57,6 @@ export async function dispatchCreateTimeLimitRule ({ action, cache, fromChildSel
sessionPauseMilliseconds: action.rule.sessionPauseMilliseconds
}, { transaction: cache.transaction })
- cache.categoriesWithModifiedTimeLimitRules.push(action.rule.categoryId)
+ cache.categoriesWithModifiedTimeLimitRules.add(action.rule.categoryId)
cache.areChangesImportant = true
}
diff --git a/src/function/sync/apply-actions/dispatch-parent-action/deletetimelimitrule.ts b/src/function/sync/apply-actions/dispatch-parent-action/deletetimelimitrule.ts
index e1e6909..e685955 100644
--- a/src/function/sync/apply-actions/dispatch-parent-action/deletetimelimitrule.ts
+++ b/src/function/sync/apply-actions/dispatch-parent-action/deletetimelimitrule.ts
@@ -37,6 +37,6 @@ export async function dispatchDeleteTimeLimitRule ({ action, cache }: {
await ruleEntry.destroy({ transaction: cache.transaction })
- cache.categoriesWithModifiedTimeLimitRules.push(ruleEntry.categoryId)
+ cache.categoriesWithModifiedTimeLimitRules.add(ruleEntry.categoryId)
cache.areChangesImportant = true
}
diff --git a/src/function/sync/apply-actions/dispatch-parent-action/incrementcategoryextratime.ts b/src/function/sync/apply-actions/dispatch-parent-action/incrementcategoryextratime.ts
index 5ff9710..17ae903 100644
--- a/src/function/sync/apply-actions/dispatch-parent-action/incrementcategoryextratime.ts
+++ b/src/function/sync/apply-actions/dispatch-parent-action/incrementcategoryextratime.ts
@@ -40,7 +40,7 @@ export async function dispatchIncrementCategoryExtraTime ({ action, cache }: {
await category.save({ transaction: cache.transaction })
- cache.categoriesWithModifiedBaseData.push(category.categoryId)
+ cache.categoriesWithModifiedBaseData.add(category.categoryId)
cache.areChangesImportant = true
}
diff --git a/src/function/sync/apply-actions/dispatch-parent-action/removecategoryapps.ts b/src/function/sync/apply-actions/dispatch-parent-action/removecategoryapps.ts
index 7f471af..d5f0f31 100644
--- a/src/function/sync/apply-actions/dispatch-parent-action/removecategoryapps.ts
+++ b/src/function/sync/apply-actions/dispatch-parent-action/removecategoryapps.ts
@@ -41,6 +41,6 @@ export async function dispatchRemoveCategoryApps ({ action, cache }: {
})
}
- cache.categoriesWithModifiedApps.push(action.categoryId)
+ cache.categoriesWithModifiedApps.add(action.categoryId)
cache.areChangesImportant = true
}
diff --git a/src/function/sync/apply-actions/dispatch-parent-action/resetcategorynetworkids.ts b/src/function/sync/apply-actions/dispatch-parent-action/resetcategorynetworkids.ts
index ee6de73..d71d730 100644
--- a/src/function/sync/apply-actions/dispatch-parent-action/resetcategorynetworkids.ts
+++ b/src/function/sync/apply-actions/dispatch-parent-action/resetcategorynetworkids.ts
@@ -44,6 +44,6 @@ export async function dispatchResetCategoryNetworkIds ({ action, cache }: {
transaction: cache.transaction
})
- cache.categoriesWithModifiedBaseData.push(action.categoryId)
+ cache.categoriesWithModifiedBaseData.add(action.categoryId)
cache.areChangesImportant = true
}
diff --git a/src/function/sync/apply-actions/dispatch-parent-action/setcategoryextratime.ts b/src/function/sync/apply-actions/dispatch-parent-action/setcategoryextratime.ts
index 3e125c0..06c1b39 100644
--- a/src/function/sync/apply-actions/dispatch-parent-action/setcategoryextratime.ts
+++ b/src/function/sync/apply-actions/dispatch-parent-action/setcategoryextratime.ts
@@ -51,6 +51,6 @@ export async function dispatchSetCategoryExtraTime ({ action, cache }: {
transaction: cache.transaction
})
- cache.categoriesWithModifiedBaseData.push(action.categoryId)
+ cache.categoriesWithModifiedBaseData.add(action.categoryId)
cache.areChangesImportant = true
}
diff --git a/src/function/sync/apply-actions/dispatch-parent-action/setparentcategory.ts b/src/function/sync/apply-actions/dispatch-parent-action/setparentcategory.ts
index 7423933..b6cbc11 100644
--- a/src/function/sync/apply-actions/dispatch-parent-action/setparentcategory.ts
+++ b/src/function/sync/apply-actions/dispatch-parent-action/setparentcategory.ts
@@ -117,6 +117,6 @@ export async function dispatchSetParentCategory ({ action, cache, fromChildSelfL
transaction: cache.transaction
})
- cache.categoriesWithModifiedBaseData.push(action.categoryId)
+ cache.categoriesWithModifiedBaseData.add(action.categoryId)
cache.areChangesImportant = true
}
diff --git a/src/function/sync/apply-actions/dispatch-parent-action/updatecategorybatterylimit.ts b/src/function/sync/apply-actions/dispatch-parent-action/updatecategorybatterylimit.ts
index 6f7a7b8..b1329b6 100644
--- a/src/function/sync/apply-actions/dispatch-parent-action/updatecategorybatterylimit.ts
+++ b/src/function/sync/apply-actions/dispatch-parent-action/updatecategorybatterylimit.ts
@@ -45,6 +45,6 @@ export async function dispatchUpdateCategoryBatteryLimit ({ action, cache }: {
await categoryEntry.save({ transaction: cache.transaction })
- cache.categoriesWithModifiedBaseData.push(action.categoryId)
+ cache.categoriesWithModifiedBaseData.add(action.categoryId)
cache.areChangesImportant = true
}
diff --git a/src/function/sync/apply-actions/dispatch-parent-action/updatecategoryblockallnotifications.ts b/src/function/sync/apply-actions/dispatch-parent-action/updatecategoryblockallnotifications.ts
index 8868b99..59c025c 100644
--- a/src/function/sync/apply-actions/dispatch-parent-action/updatecategoryblockallnotifications.ts
+++ b/src/function/sync/apply-actions/dispatch-parent-action/updatecategoryblockallnotifications.ts
@@ -59,7 +59,7 @@ export async function dispatchUpdateCategoryBlockAllNotifications ({ action, cac
})
if (affectedRows !== 0) {
- cache.categoriesWithModifiedBaseData.push(action.categoryId)
+ cache.categoriesWithModifiedBaseData.add(action.categoryId)
cache.areChangesImportant = true
}
}
diff --git a/src/function/sync/apply-actions/dispatch-parent-action/updatecategoryblockedtimes.ts b/src/function/sync/apply-actions/dispatch-parent-action/updatecategoryblockedtimes.ts
index 046c9e1..10f7f39 100644
--- a/src/function/sync/apply-actions/dispatch-parent-action/updatecategoryblockedtimes.ts
+++ b/src/function/sync/apply-actions/dispatch-parent-action/updatecategoryblockedtimes.ts
@@ -69,6 +69,6 @@ export async function dispatchUpdateCategoryBlockedTimes ({ action, cache, fromC
transaction: cache.transaction
})
- cache.categoriesWithModifiedBaseData.push(action.categoryId)
+ cache.categoriesWithModifiedBaseData.add(action.categoryId)
cache.areChangesImportant = true
}
diff --git a/src/function/sync/apply-actions/dispatch-parent-action/updatecategorysorting.ts b/src/function/sync/apply-actions/dispatch-parent-action/updatecategorysorting.ts
index 6948cc8..ec4d279 100644
--- a/src/function/sync/apply-actions/dispatch-parent-action/updatecategorysorting.ts
+++ b/src/function/sync/apply-actions/dispatch-parent-action/updatecategorysorting.ts
@@ -40,6 +40,6 @@ export async function dispatchUpdateCategorySorting ({ action, cache }: {
}
})
- cache.categoriesWithModifiedBaseData.push(categoryId)
+ cache.categoriesWithModifiedBaseData.add(categoryId)
}
}
diff --git a/src/function/sync/apply-actions/dispatch-parent-action/updatecategorytemporarilyblocked.ts b/src/function/sync/apply-actions/dispatch-parent-action/updatecategorytemporarilyblocked.ts
index 61f7573..0a66438 100644
--- a/src/function/sync/apply-actions/dispatch-parent-action/updatecategorytemporarilyblocked.ts
+++ b/src/function/sync/apply-actions/dispatch-parent-action/updatecategorytemporarilyblocked.ts
@@ -79,7 +79,7 @@ export async function dispatchUpdateCategoryTemporarilyBlocked ({ action, cache,
})
if (affectedRows !== 0) {
- cache.categoriesWithModifiedBaseData.push(action.categoryId)
+ cache.categoriesWithModifiedBaseData.add(action.categoryId)
cache.areChangesImportant = true
}
}
diff --git a/src/function/sync/apply-actions/dispatch-parent-action/updatecategorytimewarnings.ts b/src/function/sync/apply-actions/dispatch-parent-action/updatecategorytimewarnings.ts
index 103cb5e..7748899 100644
--- a/src/function/sync/apply-actions/dispatch-parent-action/updatecategorytimewarnings.ts
+++ b/src/function/sync/apply-actions/dispatch-parent-action/updatecategorytimewarnings.ts
@@ -43,6 +43,6 @@ export async function dispatchUpdateCategoryTimeWarnings ({ action, cache }: {
await categoryEntry.save({ transaction: cache.transaction })
- cache.categoriesWithModifiedBaseData.push(action.categoryId)
+ cache.categoriesWithModifiedBaseData.add(action.categoryId)
cache.areChangesImportant = true
}
diff --git a/src/function/sync/apply-actions/dispatch-parent-action/updatecategorytitle.ts b/src/function/sync/apply-actions/dispatch-parent-action/updatecategorytitle.ts
index 058ee66..d575031 100644
--- a/src/function/sync/apply-actions/dispatch-parent-action/updatecategorytitle.ts
+++ b/src/function/sync/apply-actions/dispatch-parent-action/updatecategorytitle.ts
@@ -46,7 +46,7 @@ export async function dispatchUpdateCategoryTitle ({ action, cache }: {
})
if (affectedRows !== 0) {
- cache.categoriesWithModifiedBaseData.push(action.categoryId)
+ cache.categoriesWithModifiedBaseData.add(action.categoryId)
cache.areChangesImportant = true
}
}
diff --git a/src/function/sync/apply-actions/dispatch-parent-action/updatetimelimitrule.ts b/src/function/sync/apply-actions/dispatch-parent-action/updatetimelimitrule.ts
index d7bf4b5..176958c 100644
--- a/src/function/sync/apply-actions/dispatch-parent-action/updatetimelimitrule.ts
+++ b/src/function/sync/apply-actions/dispatch-parent-action/updatetimelimitrule.ts
@@ -45,6 +45,6 @@ export async function dispatchUpdateTimelimitRule ({ action, cache }: {
await ruleEntry.save({ transaction: cache.transaction })
- cache.categoriesWithModifiedTimeLimitRules.push(ruleEntry.categoryId)
+ cache.categoriesWithModifiedTimeLimitRules.add(ruleEntry.categoryId)
cache.areChangesImportant = true
}
diff --git a/src/util/list.ts b/src/util/list.ts
index c89909b..fb3005d 100644
--- a/src/util/list.ts
+++ b/src/util/list.ts
@@ -20,3 +20,11 @@ import { uniq } from 'lodash'
export function hasDuplicates (list: Array): boolean {
return uniq(list).length !== list.length
}
+
+export function setToList (set: Set): Array {
+ const result: Array = []
+
+ set.forEach((item) => result.push(item))
+
+ return result
+}