proper asset creation/deletion, also raw file view in admin as well
This commit is contained in:
@@ -13,12 +13,14 @@ import { traceResultAsync } from "@core/observability";
|
||||
import { MobileRepository } from "./repository";
|
||||
import { settings } from "@core/settings";
|
||||
import { mobileErrors } from "./errors";
|
||||
import { errAsync } from "neverthrow";
|
||||
import { getFileController, type FileController } from "@domains/files/controller";
|
||||
import { errAsync, okAsync } from "neverthrow";
|
||||
import { db } from "@pkg/db";
|
||||
|
||||
export class MobileController {
|
||||
constructor(
|
||||
private mobileRepo: MobileRepository,
|
||||
private fileController: FileController,
|
||||
private defaultAdminEmail?: string,
|
||||
) {}
|
||||
|
||||
@@ -201,11 +203,13 @@ export class MobileController {
|
||||
"app.mobile.media_asset_id": mediaAssetId,
|
||||
},
|
||||
fn: () =>
|
||||
this.mobileRepo.deleteMediaAsset(
|
||||
fctx,
|
||||
mediaAssetId,
|
||||
ownerUserId,
|
||||
),
|
||||
this.mobileRepo
|
||||
.deleteMediaAsset(fctx, mediaAssetId, ownerUserId)
|
||||
.andThen((fileId) =>
|
||||
this.fileController
|
||||
.deleteFiles(fctx, [fileId], ownerUserId)
|
||||
.map(() => true),
|
||||
),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -217,7 +221,31 @@ export class MobileController {
|
||||
"app.user.id": ownerUserId,
|
||||
"app.mobile.device_id": deviceId,
|
||||
},
|
||||
fn: () => this.mobileRepo.deleteDevice(fctx, deviceId, ownerUserId),
|
||||
fn: () =>
|
||||
this.mobileRepo
|
||||
.deleteDevice(fctx, deviceId, ownerUserId)
|
||||
.andThen((result) => {
|
||||
const cleanup = result.fileIds.length
|
||||
? this.fileController.deleteFiles(
|
||||
fctx,
|
||||
result.fileIds,
|
||||
ownerUserId,
|
||||
)
|
||||
: okAsync(true);
|
||||
|
||||
return cleanup.andThen(() =>
|
||||
this.mobileRepo
|
||||
.finalizeDeleteDevice(
|
||||
fctx,
|
||||
deviceId,
|
||||
ownerUserId,
|
||||
)
|
||||
.map(() => ({
|
||||
deleted: true,
|
||||
deletedFileCount: result.fileIds.length,
|
||||
})),
|
||||
);
|
||||
}),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -235,6 +263,7 @@ export class MobileController {
|
||||
export function getMobileController(): MobileController {
|
||||
return new MobileController(
|
||||
new MobileRepository(db),
|
||||
getFileController(),
|
||||
settings.defaultAdminEmail || undefined,
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user