import { remove } from 'fs-extra'
import LRUCache from 'lru-cache'
import { join } from 'path'
+import { Transaction } from 'sequelize/types'
import { ActorModel } from '@server/models/actor/actor'
import { getLowercaseExtension } from '@shared/core-utils'
import { buildUUID } from '@shared/extra-utils'
// ---------------------------------------------------------------------------
+async function findAvailableLocalActorName (baseActorName: string, transaction?: Transaction) {
+ let actor = await ActorModel.loadLocalByName(baseActorName, transaction)
+ if (!actor) return baseActorName
+
+ for (let i = 1; i < 30; i++) {
+ const name = `${baseActorName}-${i}`
+
+ actor = await ActorModel.loadLocalByName(name, transaction)
+ if (!actor) return name
+ }
+
+ throw new Error('Cannot find available actor local name (too much iterations).')
+}
+
+// ---------------------------------------------------------------------------
+
function downloadActorImageFromWorker (options: {
fileUrl: string
filename: string
export {
actorImagePathUnsafeCache,
updateLocalActorImageFiles,
+ findAvailableLocalActorName,
downloadActorImageFromWorker,
deleteLocalActorImageFile,
downloadImageFromWorker,