diff --git a/src/function/sync/get-server-data-status.ts b/src/function/sync/get-server-data-status.ts
index 9f62a08..00aebe2 100644
--- a/src/function/sync/get-server-data-status.ts
+++ b/src/function/sync/get-server-data-status.ts
@@ -191,37 +191,64 @@ export const generateServerDataStatus = async ({ database, clientStatus, familyI
const idsOfDevicesWhereInstalledAppsMustBeSynced = [...addedDeviceIds, ...deviceIdsWhereInstalledAppsHaveChanged]
if (idsOfDevicesWhereInstalledAppsMustBeSynced.length > 0) {
- const dataToSync = (await database.app.findAll({
- where: {
- familyId,
- deviceId: {
- [Sequelize.Op.in]: idsOfDevicesWhereInstalledAppsMustBeSynced
- }
- },
- attributes: [
- 'deviceId',
- 'packageName',
- 'title',
- 'isLaunchable',
- 'recommendation'
- ],
- transaction
- })).map((item) => ({
- deviceId: item.deviceId,
- packageName: item.packageName,
- title: item.title,
- isLaunchable: item.isLaunchable,
- recommendation: item.recommendation
- }))
-
- result.apps = idsOfDevicesWhereInstalledAppsMustBeSynced.map((deviceId): ServerInstalledAppsData => ({
- deviceId,
- apps: dataToSync.filter((item) => item.deviceId === deviceId).map((item) => ({
+ const [appsToSync, activitiesToSync] = await Promise.all([
+ database.app.findAll({
+ where: {
+ familyId,
+ deviceId: {
+ [Sequelize.Op.in]: idsOfDevicesWhereInstalledAppsMustBeSynced
+ }
+ },
+ attributes: [
+ 'deviceId',
+ 'packageName',
+ 'title',
+ 'isLaunchable',
+ 'recommendation'
+ ],
+ transaction
+ }).map((item) => ({
+ deviceId: item.deviceId,
packageName: item.packageName,
title: item.title,
isLaunchable: item.isLaunchable,
recommendation: item.recommendation
})),
+ database.appActivity.findAll({
+ where: {
+ familyId,
+ deviceId: {
+ [Sequelize.Op.in]: idsOfDevicesWhereInstalledAppsMustBeSynced
+ }
+ },
+ attributes: [
+ 'deviceId',
+ 'packageName',
+ 'title',
+ 'className'
+ ],
+ transaction
+ }).map((item) => ({
+ deviceId: item.deviceId,
+ packageName: item.packageName,
+ activityName: item.activityName,
+ title: item.title
+ }))
+ ])
+
+ result.apps = idsOfDevicesWhereInstalledAppsMustBeSynced.map((deviceId): ServerInstalledAppsData => ({
+ deviceId,
+ apps: appsToSync.filter((item) => item.deviceId === deviceId).map((item) => ({
+ packageName: item.packageName,
+ title: item.title,
+ isLaunchable: item.isLaunchable,
+ recommendation: item.recommendation
+ })),
+ activities: activitiesToSync.filter((item) => item.deviceId === deviceId).map((item) => ({
+ p: item.packageName,
+ c: item.activityName,
+ t: item.title
+ })),
version: getServerInstalledAppsVersionByDeviceId(deviceId)
}))
}
diff --git a/src/object/serverdatastatus.ts b/src/object/serverdatastatus.ts
index 39f2b54..61db358 100644
--- a/src/object/serverdatastatus.ts
+++ b/src/object/serverdatastatus.ts
@@ -15,6 +15,7 @@
* along with this program. If not, see .
*/
+import { SerializedAppActivityItem } from '../model/appactivity'
import { SerializedInstalledApp } from '../model/installedapp'
import { NewPermissionStatus } from '../model/newpermissionstatus'
import { ProtectionLevel } from '../model/protectionlevel'
@@ -135,4 +136,5 @@ export interface ServerInstalledAppsData {
deviceId: string
version: string
apps: Array
+ activities: Array
}