fix host avatar restore

peertube
Namekuji 2023-01-28 23:33:16 -05:00
rodzic 3ad0378bd2
commit 8dc11e7f84
4 zmienionych plików z 37 dodań i 17 usunięć

Wyświetl plik

@ -30,7 +30,7 @@ export const useMastodonStore = defineStore("mastodon", {
return `${url.origin}/u/@${this.oauth.audon.webfinger}`;
}
return "";
}
},
},
actions: {
async fetchToken() {
@ -56,7 +56,11 @@ export const useMastodonStore = defineStore("mastodon", {
async revertAvatar() {
const token = await axios.get("/api/token");
const rooms = await axios.get("/api/room");
if (token.data.audon.avatar && rooms.data.length < 1) {
if (
token.data.audon.avatar &&
(rooms.data.length === 0 ||
(rooms.data.length === 1 && rooms.data[0].role === "host"))
) {
if (this.avatar) {
await this.updateAvatar(this.avatar, token.data.audon.avatar);
}

14
room.go
Wyświetl plik

@ -257,14 +257,6 @@ func joinRoomHandler(c echo.Context) (err error) {
return ErrAlreadyEnded
}
lkRoom, _ := getRoomInLivekit(c.Request().Context(), room.RoomID) // lkRoom will be nil if it doesn't exist
if lkRoom == nil {
return ErrRoomNotFound
}
roomMetadata, _ := getRoomMetadataFromLivekitRoom(lkRoom)
room = roomMetadata.Room
canTalk := room.IsHost(user) || room.IsCoHost(user) // host and cohost can talk from the beginning
// check room restriction
@ -302,6 +294,12 @@ func joinRoomHandler(c echo.Context) (err error) {
}
}
lkRoom, _ := getRoomInLivekit(c.Request().Context(), room.RoomID) // lkRoom will be nil if it doesn't exist
if lkRoom == nil {
return ErrRoomNotFound
}
roomMetadata, _ := getRoomMetadataFromLivekitRoom(lkRoom)
// return 403 if one has been kicked
for _, kicked := range roomMetadata.Kicked {
if kicked.Equal(user) {

Wyświetl plik

@ -90,11 +90,6 @@ func (a *AudonUser) GetCurrentLivekitRooms(ctx context.Context) ([]*livekit.Room
break
}
}
// check host
room, _ := getRoomMetadataFromLivekitRoom(r)
if room.IsHost(a) {
current = append(current, r)
}
}
return current, nil
}

27
user.go
Wyświetl plik

@ -8,6 +8,7 @@ import (
"time"
"github.com/labstack/echo/v4"
"github.com/livekit/protocol/livekit"
mastodon "github.com/mattn/go-mastodon"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo/options"
@ -155,8 +156,9 @@ func (a *AudonUser) GetCurrentRoomStatus(ctx context.Context) ([]UserStatus, err
if err != nil {
return nil, err
}
roomList := make([]UserStatus, len(rooms))
for i, r := range rooms {
for _, r := range rooms {
meta, _ := getRoomMetadataFromLivekitRoom(r)
role := "listener"
if meta.Room.IsHost(a) {
@ -166,10 +168,31 @@ func (a *AudonUser) GetCurrentRoomStatus(ctx context.Context) ([]UserStatus, err
} else if meta.IsSpeaker(a) {
role = "speaker"
}
roomList[i] = UserStatus{
roomList = append(roomList, UserStatus{
RoomID: r.GetName(),
Role: role,
})
}
for _, s := range roomList {
if s.Role == "host" {
return roomList, nil
}
}
allRooms, err := lkRoomServiceClient.ListRooms(ctx, &livekit.ListRoomsRequest{})
if err != nil {
return nil, err
}
for _, r := range allRooms.GetRooms() {
meta, _ := getRoomMetadataFromLivekitRoom(r)
if meta.IsHost(a) {
roomList = append(roomList, UserStatus{
RoomID: r.GetName(),
Role: "host",
})
}
}
return roomList, nil
}