kopia lustrzana https://codeberg.org/nmkj/audon
fix host avatar restore
rodzic
3ad0378bd2
commit
8dc11e7f84
|
@ -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
14
room.go
|
@ -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) {
|
||||
|
|
|
@ -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
27
user.go
|
@ -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
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue