mirror of
https://codeberg.org/timelimit/timelimit-server.git
synced 2026-08-31 19:03:45 +02:00
Send app activities to clients
This commit is contained in:
@@ -191,7 +191,8 @@ export const generateServerDataStatus = async ({ database, clientStatus, familyI
|
|||||||
const idsOfDevicesWhereInstalledAppsMustBeSynced = [...addedDeviceIds, ...deviceIdsWhereInstalledAppsHaveChanged]
|
const idsOfDevicesWhereInstalledAppsMustBeSynced = [...addedDeviceIds, ...deviceIdsWhereInstalledAppsHaveChanged]
|
||||||
|
|
||||||
if (idsOfDevicesWhereInstalledAppsMustBeSynced.length > 0) {
|
if (idsOfDevicesWhereInstalledAppsMustBeSynced.length > 0) {
|
||||||
const dataToSync = (await database.app.findAll({
|
const [appsToSync, activitiesToSync] = await Promise.all([
|
||||||
|
database.app.findAll({
|
||||||
where: {
|
where: {
|
||||||
familyId,
|
familyId,
|
||||||
deviceId: {
|
deviceId: {
|
||||||
@@ -206,22 +207,48 @@ export const generateServerDataStatus = async ({ database, clientStatus, familyI
|
|||||||
'recommendation'
|
'recommendation'
|
||||||
],
|
],
|
||||||
transaction
|
transaction
|
||||||
})).map((item) => ({
|
}).map((item) => ({
|
||||||
deviceId: item.deviceId,
|
deviceId: item.deviceId,
|
||||||
packageName: item.packageName,
|
packageName: item.packageName,
|
||||||
title: item.title,
|
title: item.title,
|
||||||
isLaunchable: item.isLaunchable,
|
isLaunchable: item.isLaunchable,
|
||||||
recommendation: item.recommendation
|
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 => ({
|
result.apps = idsOfDevicesWhereInstalledAppsMustBeSynced.map((deviceId): ServerInstalledAppsData => ({
|
||||||
deviceId,
|
deviceId,
|
||||||
apps: dataToSync.filter((item) => item.deviceId === deviceId).map((item) => ({
|
apps: appsToSync.filter((item) => item.deviceId === deviceId).map((item) => ({
|
||||||
packageName: item.packageName,
|
packageName: item.packageName,
|
||||||
title: item.title,
|
title: item.title,
|
||||||
isLaunchable: item.isLaunchable,
|
isLaunchable: item.isLaunchable,
|
||||||
recommendation: item.recommendation
|
recommendation: item.recommendation
|
||||||
})),
|
})),
|
||||||
|
activities: activitiesToSync.filter((item) => item.deviceId === deviceId).map((item) => ({
|
||||||
|
p: item.packageName,
|
||||||
|
c: item.activityName,
|
||||||
|
t: item.title
|
||||||
|
})),
|
||||||
version: getServerInstalledAppsVersionByDeviceId(deviceId)
|
version: getServerInstalledAppsVersionByDeviceId(deviceId)
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import { SerializedAppActivityItem } from '../model/appactivity'
|
||||||
import { SerializedInstalledApp } from '../model/installedapp'
|
import { SerializedInstalledApp } from '../model/installedapp'
|
||||||
import { NewPermissionStatus } from '../model/newpermissionstatus'
|
import { NewPermissionStatus } from '../model/newpermissionstatus'
|
||||||
import { ProtectionLevel } from '../model/protectionlevel'
|
import { ProtectionLevel } from '../model/protectionlevel'
|
||||||
@@ -135,4 +136,5 @@ export interface ServerInstalledAppsData {
|
|||||||
deviceId: string
|
deviceId: string
|
||||||
version: string
|
version: string
|
||||||
apps: Array<SerializedInstalledApp>
|
apps: Array<SerializedInstalledApp>
|
||||||
|
activities: Array<SerializedAppActivityItem>
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user