mirror of
https://github.com/mattermost/mattermost-mobile.git
synced 2026-11-06 10:50:13 +00:00
* consider all error paths when wiping server artifacts * log events related to ephemeral mode to keep an audit log server side * adds playbook run delete count to cleanup audit events * sends signature as proof for auditing wipe events * fixes some missed data in audit events * throw and log errors while enqueuing audit events * report exact deleted count on audit event * test terminate session prunes audit event queue in all cases * assert on queue lenght in tests * fetch count inside write transaction to return accurate value * remove delete count expectations from tests since unsafe where clauses are not supported by loki
36 lines
1.7 KiB
TypeScript
36 lines
1.7 KiB
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import type ClientBase from './base';
|
|
|
|
export interface ClientEphemeralModeMix {
|
|
logOfflinePurge: (offlineTimeMinutes: number, purgeAt: number, errorReason?: string) => Promise<{status: string}>;
|
|
logCleanup: (postsDeleted: number, playbookRunsDeleted: number, cleanupAt: number, errorReason?: string) => Promise<{status: string}>;
|
|
logSessionWipe: (signature: string, wipeAt: number, errorReason?: string) => Promise<{status: string}>;
|
|
}
|
|
|
|
const ClientEphemeralMode = <TBase extends Constructor<ClientBase>>(superclass: TBase) => class extends superclass {
|
|
logOfflinePurge = async (offlineTimeMinutes: number, purgeAt: number, errorReason?: string) => {
|
|
return this.doFetch(
|
|
`${this.urlVersion}/ephemeral_mode/purge`,
|
|
{method: 'post', body: {offline_time_minutes: offlineTimeMinutes, purge_at: purgeAt, error_reason: errorReason}},
|
|
);
|
|
};
|
|
|
|
logCleanup = async (postsDeleted: number, playbookRunsDeleted: number, cleanupAt: number, errorReason?: string) => {
|
|
return this.doFetch(
|
|
`${this.urlVersion}/ephemeral_mode/cleanup`,
|
|
{method: 'post', body: {posts_deleted: postsDeleted, playbook_runs_deleted: playbookRunsDeleted, cleanup_at: cleanupAt, error_reason: errorReason}},
|
|
);
|
|
};
|
|
|
|
logSessionWipe = async (signature: string, wipeAt: number, errorReason?: string) => {
|
|
return this.doFetch(
|
|
`${this.urlVersion}/ephemeral_mode/wipe`,
|
|
{method: 'post', body: {signature, wipe_at: wipeAt, error_reason: errorReason}},
|
|
);
|
|
};
|
|
};
|
|
|
|
export default ClientEphemeralMode;
|