diff --git a/src/app/components/create-status/create-status.component.ts b/src/app/components/create-status/create-status.component.ts index 456b8b0e..a386e956 100644 --- a/src/app/components/create-status/create-status.component.ts +++ b/src/app/components/create-status/create-status.component.ts @@ -537,7 +537,7 @@ export class CreateStatusComponent implements OnInit, OnDestroy { return false; } - onSubmit(): boolean { + async onSubmit(): Promise { if (this.isSending || this.mentionTooFarAwayError) return false; this.isSending = true; @@ -558,9 +558,10 @@ export class CreateStatusComponent implements OnInit, OnDestroy { break; } - const mediaAttachments = this.mediaService.mediaSubject.value.map(x => x.attachment); - const acc = this.toolsService.getSelectedAccounts()[0]; + + const mediaAttachments = (await this.mediaService.retrieveUpToDateMedia(acc)).map(x => x.attachment); + let usableStatus: Promise; if (this.statusReplyingToWrapper) { usableStatus = this.toolsService.getStatusUsableByAccount(acc, this.statusReplyingToWrapper); diff --git a/src/app/services/media.service.ts b/src/app/services/media.service.ts index 0fe3d9ab..446ee543 100644 --- a/src/app/services/media.service.ts +++ b/src/app/services/media.service.ts @@ -51,10 +51,10 @@ export class MediaService { }); } - update(account: AccountInfo, media: MediaWrapper) { + update(account: AccountInfo, media: MediaWrapper): Promise { if (media.attachment.description === media.description) return; - this.mastodonService.updateMediaAttachment(account, media.attachment.id, media.description) + return this.mastodonService.updateMediaAttachment(account, media.attachment.id, media.description) .then((att: Attachment) => { let medias = this.mediaSubject.value; let updatedMedia = medias.filter(x => x.id === media.id)[0]; @@ -66,6 +66,20 @@ export class MediaService { }); } + async retrieveUpToDateMedia(account: AccountInfo): Promise { + const allMedia = this.mediaSubject.value; + let allPromises: Promise[] = []; + + for (const m of allMedia) { + let t = this.update(account, m); + allPromises.push(t); + } + + await Promise.all(allPromises); + + return allMedia; + } + addExistingMedia(media: MediaWrapper){ if(!this.fileCache[media.attachment.url]) return;