Take the Threads Activity Centre out of labs (#12439)

* Take the TAC out of labs!

Requires https://github.com/matrix-org/matrix-react-sdk/pull/12438
and ideally https://github.com/matrix-org/matrix-react-sdk/pull/12418

* i18n

* Add test method

That's needed now we we don't include threads in the notif count in the tests

* One less labs setting

* Update snapshot

* Disable release announcement

* Unused import

* Fix some screenshots

* Fix all the unread test cases now room unreads don't include threads

* Fix more tests

* Even more test fixes

* Still more test fixes

* Oh goodness, it's more test fixes

* Fix selectors now there are 2 buttons called Threads

* Disable some tests that aren't passing

for reasons that don't appear releated to any of the TAC work, as
per the comment.

* Remove debugging

* Oops, removed too much
This commit is contained in:
David Baker 2024-04-29 16:30:19 +01:00 committed by GitHub
parent 02e7fb340e
commit 281916fd96
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
20 changed files with 341 additions and 200 deletions

View file

@ -15,7 +15,7 @@ limitations under the License.
*/
import { NotificationCountType, Room, Thread, ReceiptType } from "matrix-js-sdk/src/matrix";
import React, { useContext, useMemo } from "react";
import React, { useContext } from "react";
import { ReadReceipt } from "matrix-js-sdk/src/models/read-receipt";
import MatrixClientContext from "../../../../contexts/MatrixClientContext";
@ -25,7 +25,6 @@ import { determineUnreadState } from "../../../../RoomNotifs";
import { humanReadableNotificationLevel } from "../../../../stores/notifications/NotificationLevel";
import { doesRoomOrThreadHaveUnreadMessages } from "../../../../Unread";
import BaseTool, { DevtoolsContext, IDevtoolsProps } from "./BaseTool";
import SettingsStore from "../../../../settings/SettingsStore";
function UserReadUpTo({ target }: { target: ReadReceipt<any, any> }): JSX.Element {
const cli = useContext(MatrixClientContext);
@ -66,12 +65,10 @@ function UserReadUpTo({ target }: { target: ReadReceipt<any, any> }): JSX.Elemen
}
export default function RoomNotifications({ onBack }: IDevtoolsProps): JSX.Element {
const tacEnabled = useMemo(() => SettingsStore.getValue("threadsActivityCentre"), []);
const { room } = useContext(DevtoolsContext);
const cli = useContext(MatrixClientContext);
const { level, count } = determineUnreadState(room, undefined, !tacEnabled);
const { level, count } = determineUnreadState(room, undefined, false);
const [notificationState] = useNotificationState(room);
return (

View file

@ -368,8 +368,6 @@ const SpacePanel: React.FC = () => {
}
});
const isThreadsActivityCentreEnabled = useSettingValue<boolean>("threadsActivityCentre");
return (
<RovingTabIndexProvider handleHomeEnd handleUpDown={!dragging}>
{({ onKeyDownHandler, onDragEndHandler }) => (
@ -426,9 +424,8 @@ const SpacePanel: React.FC = () => {
)}
</Droppable>
{isThreadsActivityCentreEnabled && (
<ThreadsActivityCentre displayButtonLabel={!isPanelCollapsed} />
)}
<ThreadsActivityCentre displayButtonLabel={!isPanelCollapsed} />
<QuickSettingsButton isPanelCollapsed={isPanelCollapsed} />
</nav>
</DragDropContext>

View file

@ -15,13 +15,12 @@ limitations under the License.
*/
import { RoomEvent } from "matrix-js-sdk/src/matrix";
import { useCallback, useEffect, useMemo, useState } from "react";
import { useCallback, useEffect, useState } from "react";
import type { NotificationCount, Room } from "matrix-js-sdk/src/matrix";
import { determineUnreadState } from "../RoomNotifs";
import { NotificationLevel } from "../stores/notifications/NotificationLevel";
import { useEventEmitter } from "./useEventEmitter";
import SettingsStore from "../settings/SettingsStore";
export const useUnreadNotifications = (
room?: Room,
@ -31,8 +30,6 @@ export const useUnreadNotifications = (
count: number;
level: NotificationLevel;
} => {
const tacEnabled = useMemo(() => SettingsStore.getValue("threadsActivityCentre"), []);
const [symbol, setSymbol] = useState<string | null>(null);
const [count, setCount] = useState<number>(0);
const [level, setLevel] = useState<NotificationLevel>(NotificationLevel.None);
@ -53,11 +50,11 @@ export const useUnreadNotifications = (
useEventEmitter(room, RoomEvent.MyMembership, () => updateNotificationState());
const updateNotificationState = useCallback(() => {
const { symbol, count, level } = determineUnreadState(room, threadId, !tacEnabled);
const { symbol, count, level } = determineUnreadState(room, threadId, false);
setSymbol(symbol);
setCount(count);
setLevel(level);
}, [room, threadId, tacEnabled]);
}, [room, threadId]);
useEffect(() => {
updateNotificationState();

View file

@ -1462,8 +1462,6 @@
"sliding_sync_server_no_support": "Your server lacks native support",
"sliding_sync_server_specify_proxy": "Your server lacks native support, you must specify a proxy",
"sliding_sync_server_support": "Your server has native support",
"threads_activity_centre": "Threads Activity Centre (in development)",
"threads_activity_centre_description": "Warning: Under active development; reloads %(brand)s.",
"under_active_development": "Under active development.",
"unrealiable_e2e": "Unreliable in encrypted rooms",
"video_rooms": "Video rooms",

View file

@ -1151,15 +1151,6 @@ export const SETTINGS: { [setting: string]: ISetting } = {
supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,
default: [],
},
"threadsActivityCentre": {
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
labsGroup: LabGroup.Threads,
controller: new ReloadOnChangeController(),
displayName: _td("labs|threads_activity_centre"),
description: () => _t("labs|threads_activity_centre_description", { brand: SdkConfig.get().brand }),
default: false,
isFeature: true,
},
/**
* Enable or disable the release announcement feature
*/

View file

@ -42,8 +42,6 @@ export class RoomNotificationStateStore extends AsyncStoreWithClient<IState> {
private listMap = new Map<TagID, ListNotificationState>();
private _globalState = new SummarizedNotificationState();
private tacEnabled = SettingsStore.getValue("threadsActivityCentre");
private constructor(dispatcher = defaultDispatcher) {
super(dispatcher, {});
SettingsStore.watchSetting("feature_dynamic_room_predecessors", null, () => {
@ -99,7 +97,7 @@ export class RoomNotificationStateStore extends AsyncStoreWithClient<IState> {
*/
public getRoomState(room: Room): RoomNotificationState {
if (!this.roomMap.has(room)) {
this.roomMap.set(room, new RoomNotificationState(room, !this.tacEnabled));
this.roomMap.set(room, new RoomNotificationState(room, false));
}
return this.roomMap.get(room)!;
}