Storing actor avatars. Using 1 second interval queue for location resolve as per OSM code of conduct.

This commit is contained in:
2020-05-16 04:36:45 +02:00
parent 21d4dd6bfa
commit 05ee57378a
28 changed files with 899 additions and 751 deletions

View File

@@ -1,47 +1,47 @@
<template>
<div
class="photos"
:class="{ wide: actor.photos.length > 2 }"
>
<a
v-if="actor.avatar"
:href="`/media/${actor.avatar.path}`"
target="_blank"
rel="noopener noreferrer"
class="avatar-link photo-link"
>
<img
:src="`/media/${actor.avatar.thumbnail}`"
:title="actor.avatar.copyright && `© ${actor.avatar.copyright}`"
class="avatar photo"
>
</a>
<div
class="photos"
:class="{ wide: actor.photos.length > 2 }"
>
<a
v-if="actor.avatar"
:href="`/media/${actor.avatar.path}`"
target="_blank"
rel="noopener noreferrer"
class="avatar-link photo-link"
>
<img
:src="`/media/${actor.avatar.thumbnail}`"
:title="actor.avatar.copyright && `© ${actor.avatar.copyright}`"
class="avatar photo"
>
</a>
<a
v-for="photo in actor.photos"
:key="`photo-${photo.id}`"
:href="`/media/${photo.path}`"
target="_blank"
rel="noopener noreferrer"
class="photo-link"
>
<img
:src="`/media/${photo.thumbnail}`"
:title="photo.copyright && `© ${photo.copyright}`"
class="photo"
>
</a>
</div>
<a
v-for="photo in actor.photos"
:key="`photo-${photo.id}`"
:href="`/media/${photo.path}`"
target="_blank"
rel="noopener noreferrer"
class="photo-link"
>
<img
:src="`/media/${photo.thumbnail}`"
:title="photo.copyright && `© ${photo.copyright}`"
class="photo"
>
</a>
</div>
</template>
<script>
export default {
props: {
actor: {
type: Object,
default: null,
},
},
props: {
actor: {
type: Object,
default: null,
},
},
};
</script>

View File

@@ -36,18 +36,15 @@ function curateActor(actor) {
updatedAt: new Date(actor.updatedAt),
};
if (actor.avatar) {
curatedActor.avatar = actor.avatar.media;
if (actor.profiles && actor.profiles.length > 0) {
curatedActor.avatar = actor.profiles.slice(0, 1)[0].avatar;
curatedActor.photos = actor.profiles.slice(1).map(profile => profile.avatar);
}
if (actor.releases) {
curatedActor.releases = actor.releases.map(release => curateRelease(release.release));
}
if (actor.photos) {
curatedActor.photos = actor.photos.map(photo => photo.media);
}
return curatedActor;
}
@@ -99,23 +96,16 @@ function initActorActions(store, _router) {
name
slug
}
actorsProfiles {
actorsAvatarByProfileId {
media {
path
thumbnail
copyright
}
}
}
photos: actorsPhotos {
media {
id
thumbnail
path
index
copyright
}
profiles: actorsProfiles {
description
avatar: avatarMedia {
id
path
thumbnail
lazy
comment
copyright
}
}
birthCity
birthState
@@ -239,6 +229,7 @@ function initActorActions(store, _router) {
actorsProfiles {
actorsAvatarByProfileId {
media {
id
path
thumbnail
copyright