]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - scripts/migrations/peertube-4.2.ts
Merge branch 'release/4.3.0' into develop
[github/Chocobozzz/PeerTube.git] / scripts / migrations / peertube-4.2.ts
index 045c3e511fee0066c9dc4f178bf8a95df22b74e1..513c629effe9af62d18a544636fa21165759be8e 100644 (file)
@@ -1,6 +1,6 @@
 import { minBy } from 'lodash'
 import { join } from 'path'
-import { processImage } from '@server/helpers/image-utils'
+import { getImageSize, processImage } from '@server/helpers/image-utils'
 import { CONFIG } from '@server/initializers/config'
 import { ACTOR_IMAGES_SIZE } from '@server/initializers/constants'
 import { updateActorImages } from '@server/lib/activitypub/actors'
@@ -27,7 +27,7 @@ async function run () {
   console.log('Generate avatar miniatures from existing avatars.')
 
   await initDatabaseModels(true)
-  JobQueue.Instance.init(true)
+  JobQueue.Instance.init()
 
   const accounts: AccountModel[] = await AccountModel.findAll({
     include: [
@@ -51,6 +51,7 @@ async function run () {
 
   for (const account of accounts) {
     try {
+      await fillAvatarSizeIfNeeded(account)
       await generateSmallerAvatarIfNeeded(account)
     } catch (err) {
       console.error(`Cannot process account avatar ${account.name}`, err)
@@ -58,6 +59,7 @@ async function run () {
 
     for (const videoChannel of account.VideoChannels) {
       try {
+        await fillAvatarSizeIfNeeded(videoChannel)
         await generateSmallerAvatarIfNeeded(videoChannel)
       } catch (err) {
         console.error(`Cannot process channel avatar ${videoChannel.name}`, err)
@@ -68,6 +70,22 @@ async function run () {
   console.log('Generation finished!')
 }
 
+async function fillAvatarSizeIfNeeded (accountOrChannel: MAccountDefault | MChannelDefault) {
+  const avatars = accountOrChannel.Actor.Avatars
+
+  for (const avatar of avatars) {
+    if (avatar.width && avatar.height) continue
+
+    console.log('Filling size of avatars of %s.', accountOrChannel.name)
+
+    const { width, height } = await getImageSize(join(CONFIG.STORAGE.ACTOR_IMAGES, avatar.filename))
+    avatar.width = width
+    avatar.height = height
+
+    await avatar.save()
+  }
+}
+
 async function generateSmallerAvatarIfNeeded (accountOrChannel: MAccountDefault | MChannelDefault) {
   const avatars = accountOrChannel.Actor.Avatars
   if (avatars.length !== 1) {
@@ -92,7 +110,7 @@ async function generateSmallerAvatar (actor: MActorDefault) {
   const source = join(CONFIG.STORAGE.ACTOR_IMAGES, sourceFilename)
   const destination = join(CONFIG.STORAGE.ACTOR_IMAGES, newImageName)
 
-  await processImage(source, destination, imageSize, true)
+  await processImage({ path: source, destination, newSize: imageSize, keepOriginal: true })
 
   const actorImageInfo = {
     name: newImageName,