mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2024-11-26 02:30:37 -06:00
Ensure server actor AP object has avatars
This commit is contained in:
parent
cd9b8c2cc8
commit
f6fb7cd3e9
@ -7,7 +7,9 @@ import {
|
|||||||
cleanupTests,
|
cleanupTests,
|
||||||
createSingleServer,
|
createSingleServer,
|
||||||
killallServers,
|
killallServers,
|
||||||
|
makeActivityPubGetRequest,
|
||||||
makeGetRequest,
|
makeGetRequest,
|
||||||
|
makeRawRequest,
|
||||||
PeerTubeServer,
|
PeerTubeServer,
|
||||||
setAccessTokensToServers
|
setAccessTokensToServers
|
||||||
} from '@peertube/peertube-server-commands'
|
} from '@peertube/peertube-server-commands'
|
||||||
@ -747,7 +749,18 @@ describe('Test config', function () {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should remove instance banner', async function () {
|
it('Should have the avatars in the AP representation of the instance', async function () {
|
||||||
|
const res = await makeActivityPubGetRequest(server.url, '/accounts/peertube')
|
||||||
|
const object = res.body
|
||||||
|
|
||||||
|
expect(object.icon).to.have.lengthOf(4)
|
||||||
|
|
||||||
|
for (const icon of object.icon) {
|
||||||
|
await makeRawRequest({ url: icon.url, expectedStatus: HttpStatusCode.OK_200 })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Should remove instance avatar', async function () {
|
||||||
await server.config.deleteInstanceImage({ type: ActorImageType.AVATAR })
|
await server.config.deleteInstanceImage({ type: ActorImageType.AVATAR })
|
||||||
|
|
||||||
const { avatars } = await checkAndGetServerImages()
|
const { avatars } = await checkAndGetServerImages()
|
||||||
@ -755,6 +768,13 @@ describe('Test config', function () {
|
|||||||
|
|
||||||
await testFileExistsOrNot(server, 'avatars', basename(avatarPath), false)
|
await testFileExistsOrNot(server, 'avatars', basename(avatarPath), false)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('Should not have the avatars anymore in the AP representation of the instance', async function () {
|
||||||
|
const res = await makeActivityPubGetRequest(server.url, '/accounts/peertube')
|
||||||
|
const object = res.body
|
||||||
|
|
||||||
|
expect(object.icon).to.not.exist
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ import { MIMETYPES } from '@server/initializers/constants.js'
|
|||||||
import { deleteLocalActorImageFile, updateLocalActorImageFiles } from '@server/lib/local-actor.js'
|
import { deleteLocalActorImageFile, updateLocalActorImageFiles } from '@server/lib/local-actor.js'
|
||||||
import { getServerActor } from '@server/models/application/application.js'
|
import { getServerActor } from '@server/models/application/application.js'
|
||||||
import { ActorImageModel } from '@server/models/actor/actor-image.js'
|
import { ActorImageModel } from '@server/models/actor/actor-image.js'
|
||||||
|
import { ModelCache } from '@server/models/shared/model-cache.js'
|
||||||
|
|
||||||
const configRouter = express.Router()
|
const configRouter = express.Router()
|
||||||
|
|
||||||
@ -193,6 +194,7 @@ function updateInstanceImageFactory (imageType: ActorImageType_Type) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
ClientHtml.invalidateCache()
|
ClientHtml.invalidateCache()
|
||||||
|
ModelCache.Instance.clearCache('server-account')
|
||||||
|
|
||||||
return res.sendStatus(HttpStatusCode.NO_CONTENT_204)
|
return res.sendStatus(HttpStatusCode.NO_CONTENT_204)
|
||||||
}
|
}
|
||||||
@ -203,6 +205,7 @@ function deleteInstanceImageFactory (imageType: ActorImageType_Type) {
|
|||||||
await deleteLocalActorImageFile((await getServerActorWithUpdatedImages(imageType)).Account, imageType)
|
await deleteLocalActorImageFile((await getServerActorWithUpdatedImages(imageType)).Account, imageType)
|
||||||
|
|
||||||
ClientHtml.invalidateCache()
|
ClientHtml.invalidateCache()
|
||||||
|
ModelCache.Instance.clearCache('server-account')
|
||||||
|
|
||||||
return res.sendStatus(HttpStatusCode.NO_CONTENT_204)
|
return res.sendStatus(HttpStatusCode.NO_CONTENT_204)
|
||||||
}
|
}
|
||||||
|
@ -301,7 +301,7 @@ export class AccountModel extends SequelizeModel<AccountModel> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return ModelCache.Instance.doCache({
|
return ModelCache.Instance.doCache({
|
||||||
cacheType: 'local-account-name',
|
cacheType: 'server-account',
|
||||||
key: name,
|
key: name,
|
||||||
fun,
|
fun,
|
||||||
// The server actor never change, so we can easily cache it
|
// The server actor never change, so we can easily cache it
|
||||||
|
@ -2,7 +2,7 @@ import { Model } from 'sequelize-typescript'
|
|||||||
import { logger } from '@server/helpers/logger.js'
|
import { logger } from '@server/helpers/logger.js'
|
||||||
|
|
||||||
type ModelCacheType =
|
type ModelCacheType =
|
||||||
'local-account-name'
|
'server-account'
|
||||||
| 'local-actor-name'
|
| 'local-actor-name'
|
||||||
| 'local-actor-url'
|
| 'local-actor-url'
|
||||||
| 'load-video-immutable-id'
|
| 'load-video-immutable-id'
|
||||||
@ -16,7 +16,7 @@ class ModelCache {
|
|||||||
private static instance: ModelCache
|
private static instance: ModelCache
|
||||||
|
|
||||||
private readonly localCache: { [id in ModelCacheType]: Map<string, any> } = {
|
private readonly localCache: { [id in ModelCacheType]: Map<string, any> } = {
|
||||||
'local-account-name': new Map(),
|
'server-account': new Map(),
|
||||||
'local-actor-name': new Map(),
|
'local-actor-name': new Map(),
|
||||||
'local-actor-url': new Map(),
|
'local-actor-url': new Map(),
|
||||||
'load-video-immutable-id': new Map(),
|
'load-video-immutable-id': new Map(),
|
||||||
@ -83,6 +83,10 @@ class ModelCache {
|
|||||||
|
|
||||||
map.delete(modelId)
|
map.delete(modelId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
clearCache (cacheType: ModelCacheType) {
|
||||||
|
this.localCache[cacheType] = new Map()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
Loading…
Reference in New Issue
Block a user