1
0
mirror of https://github.com/misskey-dev/misskey.git synced 2026-05-15 22:05:45 +02:00

Update controller.ts

This commit is contained in:
syuilo
2026-05-03 12:17:55 +09:00
parent 9b7c908c68
commit 50f7c74259

View File

@@ -141,14 +141,15 @@ export class RoomController {
if (deepEqual(this.roomState.value, roomState)) return; // vueのリアクティビティが反応して無限ループになることがあるため
this.roomState.value = JSON.parse(JSON.stringify(roomState));
if (this.selected.value != null) {
// そのまま入れると「オブジェクト(newSelected)の内容」は変わってるけど「オブジェクトの参照」そのものは変化していないから、
// その状態で代入しようがtriggerRef呼ぼうがVueは「子に対しては」更新があったと見做してくれない(親から当該refをwatchする場合は発火する)っぽい(バグか仕様かは不明)
// そのため新しい参照にするためにdeepClone
const newSelected = JSON.parse(JSON.stringify(roomState.installedObjects.find(o => o.id === this.selected.value.objectId)));
const newSelected = roomState.installedObjects.find(o => o.id === this.selected.value.objectId);
if (newSelected) {
this.selected.value = {
objectId: newSelected.id,
objectState: newSelected,
// そのまま入れると「オブジェクト(newSelected)の内容」は変わってるけど「オブジェクトの参照」そのものは変化していないから、
// その状態で代入しようがtriggerRef呼ぼうがVueは「子に対しては」更新があったと見做してくれない(親から当該refをwatchする場合は発火する)っぽい(バグか仕様かは不明)
// そのため新しい参照にするためにdeepClone
objectState: JSON.parse(JSON.stringify(newSelected)),
};
} else {
this.selected.value = null;