From ea2a771349ac1c08275246393fa1d6ebe8dbca20 Mon Sep 17 00:00:00 2001 From: Namekuji Date: Wed, 25 Jan 2023 14:52:05 -0500 Subject: [PATCH] fix avatar issue again --- audon-fe/src/components/JoinDialog.vue | 2 +- audon-fe/src/locales/en.yaml | 1 + audon-fe/src/locales/ja.yaml | 3 ++- audon-fe/src/stores/mastodon.js | 10 +++++--- audon-fe/src/views/RoomView.vue | 34 ++++++++------------------ avatar.go | 10 +------- room.go | 9 ------- webhooks.go | 1 - 8 files changed, 21 insertions(+), 49 deletions(-) diff --git a/audon-fe/src/components/JoinDialog.vue b/audon-fe/src/components/JoinDialog.vue index 1b00ec0..2c00654 100644 --- a/audon-fe/src/components/JoinDialog.vue +++ b/audon-fe/src/components/JoinDialog.vue @@ -88,10 +88,10 @@ export default { methods: { async joining(indicator) { try { + this.donStore.avatar = this.roomToken.original; await this.roomClient.startAudio(); if (indicator && this.uploadEnabled) { this.uploading = true; - this.donStore.avatar = this.roomToken.original; try { await this.donStore.updateAvatar(this.roomToken.indicator); } finally { diff --git a/audon-fe/src/locales/en.yaml b/audon-fe/src/locales/en.yaml index e5caaa3..206cb88 100644 --- a/audon-fe/src/locales/en.yaml +++ b/audon-fe/src/locales/en.yaml @@ -79,3 +79,4 @@ closeRoomConfirm: "Are you sure you want to close this room?" roomEvent: closedByHost: "Host has closed this room." removed: "You have been requested to leave." + disconnected: "Disconnected from this room." diff --git a/audon-fe/src/locales/ja.yaml b/audon-fe/src/locales/ja.yaml index 29d3599..d7d1ee8 100644 --- a/audon-fe/src/locales/ja.yaml +++ b/audon-fe/src/locales/ja.yaml @@ -78,4 +78,5 @@ microphoneBlocked: "マイクが禁止されています。ブラウザやデバ closeRoomConfirm: "この部屋を閉じますか?" roomEvent: closedByHost: "ホストにより部屋が閉じられました。" - removed: "部屋から退去しました。" + removed: "リクエストにより部屋から退去しました。" + disconneced: "切断されました。" diff --git a/audon-fe/src/stores/mastodon.js b/audon-fe/src/stores/mastodon.js index 749d253..e4274af 100644 --- a/audon-fe/src/stores/mastodon.js +++ b/audon-fe/src/stores/mastodon.js @@ -48,10 +48,12 @@ export const useMastodonStore = defineStore("mastodon", { }, async revertAvatar() { const token = await axios.get("/api/token"); - if (this.avatar && token.data.audon.avatar) { - await this.updateAvatar(this.avatar, token.data.audon.avatar); - }; - await axios.delete("/api/room"); + if (token.data.audon.avatar) { + if (this.avatar) { + await this.updateAvatar(this.avatar, token.data.audon.avatar); + } + await axios.delete("/api/room"); + } }, }, }); diff --git a/audon-fe/src/views/RoomView.vue b/audon-fe/src/views/RoomView.vue index 49521b1..f96bdf1 100644 --- a/audon-fe/src/views/RoomView.vue +++ b/audon-fe/src/views/RoomView.vue @@ -300,6 +300,14 @@ export default { .on(RoomEvent.Disconnected, async (reason) => { // TODO: change this from alert to a vuetify thing self.noSleep.disable(); + self.closeLoading = true; + try { + await self.donStore.revertAvatar(); + } catch (error) { + console.log(error); + } finally { + self.closeLoading = false; + } if (reason === DisconnectReason.PARTICIPANT_REMOVED) { alert(self.$t("roomEvent.removed")); self.$router.push({ name: "home" }); @@ -307,32 +315,12 @@ export default { let message = ""; switch (reason) { case DisconnectReason.ROOM_DELETED: - if (self.iamHost || self.iamCohost) { - self.closeLoading = true; - try { - await self.donStore.revertAvatar(); - } catch (error) { - console.log(error); - } finally { - self.closeLoading = false; - } - } message = self.$t("roomEvent.closedByHost"); break; case DisconnectReason.CLIENT_INITIATED: - if (self.iamCohost) { - self.closeLoading = true; - try { - await self.donStore.revertAvatar(); - } catch (error) { - console.log(error); - } finally { - self.closeLoading = false; - } - } break; default: - message = "Disconnected due to unknown reasons"; + message = self.$t("roomEvent.disconnected"); } if (message !== "") { alert(message); @@ -625,13 +613,11 @@ export default { async onRoomClose() { // TODO: change this from confirm to a vuetify thing if (confirm(this.$t("closeRoomConfirm"))) { - this.loading = true; + this.closeLoading = true; try { await axios.delete(`/api/room/${this.roomID}`); } catch (error) { alert(error); - } finally { - this.loading = false; } } }, diff --git a/avatar.go b/avatar.go index 0f29f79..6d35b9a 100644 --- a/avatar.go +++ b/avatar.go @@ -33,7 +33,6 @@ func (u *AudonUser) GetIndicator(ctx context.Context, fnew []byte) ([]byte, erro } hash := sha256.Sum256(fnew) - isAvatarNew := false var err error @@ -47,7 +46,6 @@ func (u *AudonUser) GetIndicator(ctx context.Context, fnew []byte) ([]byte, erro if err := os.WriteFile(saved, fnew, 0664); err != nil { return nil, err } - isAvatarNew = true } fname := filepath.Base(saved) @@ -60,13 +58,7 @@ func (u *AudonUser) GetIndicator(ctx context.Context, fnew []byte) ([]byte, erro return nil, err } - if !isAvatarNew { - if data, err := os.ReadFile(u.GetOriginalAvatarPath(hash, mtype)); err == nil { - return data, nil - } - } - - buf := bytes.NewBuffer(fnew) + buf := bytes.NewReader(fnew) var newImg image.Image if mtype.Is("image/png") { diff --git a/room.go b/room.go index 207f376..05a9fea 100644 --- a/room.go +++ b/room.go @@ -234,15 +234,6 @@ func joinRoomHandler(c echo.Context) (err error) { return ErrRoomNotFound } - // remove old connection if user is already in the room - if room.IsUserInLivekitRoom(c.Request().Context(), user.AudonID) { - lkRoomServiceClient.RemoveParticipant(c.Request().Context(), &livekit.RoomParticipantIdentity{ - Room: room.RoomID, - Identity: user.AudonID, - }) - // return echo.NewHTTPError(http.StatusNotAcceptable, "already_in_room") - } - now := time.Now().UTC() // check if room is not yet started diff --git a/webhooks.go b/webhooks.go index c7c05ba..c7717bd 100644 --- a/webhooks.go +++ b/webhooks.go @@ -98,7 +98,6 @@ func livekitWebhookHandler(c echo.Context) error { } }() } - return c.NoContent(http.StatusOK) } else if event.GetEvent() == webhook.EventRoomStarted { // Have the bot advertise the room room, err := findRoomByID(c.Request().Context(), event.GetRoom().GetName())