Upstream v1.11.84-rc.0: Get rid of matrix-react-sdk

This commit is contained in:
SpiritCroc
2024-10-30 18:07:40 +01:00
parent 9f65d55aad
commit aa69433842
45 changed files with 69 additions and 364 deletions

View File

@ -1,4 +1,4 @@
From df9cbf4de43a3f8a5d4a539ab21c63230af629ea Mon Sep 17 00:00:00 2001
From b3b4e755efb1851b4790cdedf230cf85f64d775d Mon Sep 17 00:00:00 2001
From: su-ex <codeworks@supercable.onl>
Date: Sun, 29 Nov 2020 23:30:59 +0100
Subject: Change default login background
@ -22103,10 +22103,10 @@ literal 0
HcmV?d00001
diff --git a/src/components/views/auth/VectorAuthPage.tsx b/src/components/views/auth/VectorAuthPage.tsx
index 6641f94133..2053903c03 100644
index 969cc560a3..4636cfe808 100644
--- a/src/components/views/auth/VectorAuthPage.tsx
+++ b/src/components/views/auth/VectorAuthPage.tsx
@@ -18,7 +18,7 @@ export default class VectorAuthPage extends React.PureComponent {
@@ -18,7 +18,7 @@ export default class VectorAuthPage extends React.PureComponent<React.PropsWithC
if (VectorAuthPage.welcomeBackgroundUrl) return VectorAuthPage.welcomeBackgroundUrl;
const brandingConfig = SdkConfig.getObject("branding");

View File

@ -1,4 +1,4 @@
From 7b6f836434f75fbb7d21277f4dd31c1f3166d315 Mon Sep 17 00:00:00 2001
From fe40e94fc7092912bca454f1c2c197ca42c7dccd Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 27 Oct 2024 19:38:47 +0100
Subject: Don't welcome to Element

View File

@ -1,4 +1,4 @@
From ffaaeb91e6d35ff59ac020680fdfa3fdadaa7de6 Mon Sep 17 00:00:00 2001
From 4a593cab4f41b9ac0b07b43c3574d77d4d85238d Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 27 Oct 2024 19:55:30 +0100
Subject: Stronger login background to ensure contrast of our icon with our bg
@ -8,10 +8,10 @@ Subject: Stronger login background to ensure contrast of our icon with our bg
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/views/auth/VectorAuthPage.tsx b/src/components/views/auth/VectorAuthPage.tsx
index 2053903c03..822db9da93 100644
index 4636cfe808..05dcdbbbf7 100644
--- a/src/components/views/auth/VectorAuthPage.tsx
+++ b/src/components/views/auth/VectorAuthPage.tsx
@@ -56,7 +56,7 @@ export default class VectorAuthPage extends React.PureComponent {
@@ -56,7 +56,7 @@ export default class VectorAuthPage extends React.PureComponent<React.PropsWithC
const modalContentStyle: React.CSSProperties = {
display: "flex",
zIndex: 1,

View File

@ -1,4 +1,4 @@
From 177e652388fbeef0113d3fa07f00de09f24f70dd Mon Sep 17 00:00:00 2001
From 113e105d802f904e9cfdc3dca4cb6a74f4ae259a Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 27 Oct 2024 20:07:30 +0100
Subject: Schildify login footer
@ -8,7 +8,7 @@ Subject: Schildify login footer
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/components/views/auth/VectorAuthFooter.tsx b/src/components/views/auth/VectorAuthFooter.tsx
index a81517b516..3828e5ad74 100644
index 234c6b127b..44d41004a0 100644
--- a/src/components/views/auth/VectorAuthFooter.tsx
+++ b/src/components/views/auth/VectorAuthFooter.tsx
@@ -14,9 +14,10 @@ import { _t } from "../../../languageHandler";

View File

@ -0,0 +1,29 @@
From 89ffe82738128afc556bdbf5e07a1ed05640a78b Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Tue, 18 Jan 2022 13:28:22 +0100
Subject: Disable sticky rooms
---
src/stores/room-list/algorithms/Algorithm.ts | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/stores/room-list/algorithms/Algorithm.ts b/src/stores/room-list/algorithms/Algorithm.ts
index c3450d70cf..e296676149 100644
--- a/src/stores/room-list/algorithms/Algorithm.ts
+++ b/src/stores/room-list/algorithms/Algorithm.ts
@@ -159,8 +159,10 @@ export class Algorithm extends EventEmitter {
this.recalculateActiveCallRooms(tagId);
}
- private updateStickyRoom(val: Room | null): void {
- this.doUpdateStickyRoom(val);
+ private updateStickyRoom(val: Room) {
+ // Schildi: we don't want it sticky
+ this.doUpdateStickyRoom(null);
+ //this.doUpdateStickyRoom(val);
this._lastStickyRoom = null; // clear to indicate we're done changing
}
--
2.47.0

View File

@ -0,0 +1,263 @@
From aa67c52dbb37da389722571f480f1d391598bb77 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 5 May 2024 10:12:17 +0200
Subject: Bring back unified room list
Remaining TODO:
- Hook up setting to UI again (better with own SC-specific screen?)
Co-authored-by: su-ex <codeworks@supercable.onl>
---
src/components/views/rooms/RoomList.tsx | 39 +++++++++++++++++++-
src/settings/Settings.tsx | 8 ++++
src/stores/room-list/RoomListStore.ts | 19 +++++++++-
src/stores/room-list/algorithms/Algorithm.ts | 20 ++++++++--
src/stores/room-list/models.ts | 2 +
5 files changed, 83 insertions(+), 5 deletions(-)
diff --git a/src/components/views/rooms/RoomList.tsx b/src/components/views/rooms/RoomList.tsx
index e27b2ca03f..311a54d9d8 100644
--- a/src/components/views/rooms/RoomList.tsx
+++ b/src/components/views/rooms/RoomList.tsx
@@ -72,11 +72,13 @@ interface IState {
sublists: ITagMap;
currentRoomId?: string;
suggestedRooms: ISuggestedRoom[];
+ unifiedRoomList: boolean;
}
export const TAG_ORDER: TagID[] = [
DefaultTagID.Invite,
DefaultTagID.Favourite,
+ DefaultTagID.Unified,
DefaultTagID.DM,
DefaultTagID.Untagged,
DefaultTagID.Conference,
@@ -89,6 +91,7 @@ export const TAG_ORDER: TagID[] = [
// but we'd have to make sure that rooms you weren't in were hidden.
];
const ALWAYS_VISIBLE_TAGS: TagID[] = [DefaultTagID.DM, DefaultTagID.Untagged];
+const ALWAYS_VISIBLE_UNIFIED_TAGS: TagID[] = [DefaultTagID.Unified];
interface ITagAesthetics {
sectionLabel: TranslationKey;
@@ -366,6 +369,17 @@ const UntaggedAuxButton: React.FC<IAuxButtonProps> = ({ tabIndex }) => {
return null;
};
+const UnifiedAuxButton: React.FC<IAuxButtonProps> = (iAuxButtonProps: IAuxButtonProps) => {
+ return (
+ <>
+ {/* eslint-disable-next-line new-cap */}
+ {DmAuxButton(iAuxButtonProps)}
+ {/* eslint-disable-next-line new-cap */}
+ {UntaggedAuxButton(iAuxButtonProps)}
+ </>
+ );
+};
+
const TAG_AESTHETICS: TagAestheticsMap = {
[DefaultTagID.Invite]: {
sectionLabel: _td("action|invites_list"),
@@ -383,6 +397,12 @@ const TAG_AESTHETICS: TagAestheticsMap = {
defaultHidden: false,
AuxButtonComponent: DmAuxButton,
},
+ [DefaultTagID.Unified]: {
+ sectionLabel: _td("Normal priority"),
+ isInvite: false,
+ defaultHidden: false,
+ AuxButtonComponent: UnifiedAuxButton,
+ },
[DefaultTagID.Conference]: {
sectionLabel: _td("voip|metaspace_video_rooms|conference_room_section"),
isInvite: false,
@@ -421,6 +441,7 @@ const TAG_AESTHETICS: TagAestheticsMap = {
export default class RoomList extends React.PureComponent<IProps, IState> {
private dispatcherRef?: string;
+ private readonly unifiedRoomListWatcherRef: string;
private treeRef = createRef<HTMLDivElement>();
public static contextType = MatrixClientContext;
@@ -432,7 +453,14 @@ export default class RoomList extends React.PureComponent<IProps, IState> {
this.state = {
sublists: {},
suggestedRooms: SpaceStore.instance.suggestedRooms,
+ unifiedRoomList: SettingsStore.getValue("unifiedRoomList"),
};
+
+ this.unifiedRoomListWatcherRef = SettingsStore.watchSetting(
+ "unifiedRoomList",
+ null,
+ this.onUnifiedRoomListChange,
+ );
}
public componentDidMount(): void {
@@ -447,9 +475,16 @@ export default class RoomList extends React.PureComponent<IProps, IState> {
SpaceStore.instance.off(UPDATE_SUGGESTED_ROOMS, this.updateSuggestedRooms);
RoomListStore.instance.off(LISTS_UPDATE_EVENT, this.updateLists);
if (this.dispatcherRef) defaultDispatcher.unregister(this.dispatcherRef);
+ SettingsStore.unwatchSetting(this.unifiedRoomListWatcherRef);
SdkContextClass.instance.roomViewStore.off(UPDATE_EVENT, this.onRoomViewStoreUpdate);
}
+ private onUnifiedRoomListChange = (): void => {
+ this.setState({
+ unifiedRoomList: SettingsStore.getValue("unifiedRoomList"),
+ });
+ };
+
private onRoomViewStoreUpdate = (): void => {
this.setState({
currentRoomId: SdkContextClass.instance.roomViewStore.getRoomId() ?? undefined,
@@ -590,7 +625,9 @@ export default class RoomList extends React.PureComponent<IProps, IState> {
const aesthetics = TAG_AESTHETICS[orderedTagId];
if (!aesthetics) throw new Error(`Tag ${orderedTagId} does not have aesthetics`);
- let alwaysVisible = ALWAYS_VISIBLE_TAGS.includes(orderedTagId);
+ let alwaysVisible = (
+ this.state.unifiedRoomList ? ALWAYS_VISIBLE_UNIFIED_TAGS : ALWAYS_VISIBLE_TAGS
+ ).includes(orderedTagId);
if (
(this.props.activeSpace === MetaSpace.Favourites && orderedTagId !== DefaultTagID.Favourite) ||
(this.props.activeSpace === MetaSpace.People && orderedTagId !== DefaultTagID.DM) ||
diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx
index 1c27f03e88..ae4b0ea644 100644
--- a/src/settings/Settings.tsx
+++ b/src/settings/Settings.tsx
@@ -192,6 +192,14 @@ export interface IFeature extends Omit<IBaseSetting<boolean>, "isFeature"> {
export type ISetting = IBaseSetting | IFeature;
export const SETTINGS: { [setting: string]: ISetting } = {
+ // SC settings start
+ "unifiedRoomList": {
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ displayName: _td("Show people and rooms in a combined list"),
+ default: true,
+ controller: new ReloadOnChangeController(),
+ },
+ // SC settings end
"feature_video_rooms": {
isFeature: true,
labsGroup: LabGroup.VoiceAndVideo,
diff --git a/src/stores/room-list/RoomListStore.ts b/src/stores/room-list/RoomListStore.ts
index 53377e0a01..381187b85c 100644
--- a/src/stores/room-list/RoomListStore.ts
+++ b/src/stores/room-list/RoomListStore.ts
@@ -500,6 +500,9 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> implements
this.setAndPersistListOrder(tag, listOrder);
}
}
+
+ // SC: Unified list for DMs and groups
+ this.algorithm.setUnifiedRoomList(SettingsStore.getValue("unifiedRoomList"));
}
private onAlgorithmListUpdated = (forceUpdate: boolean): void => {
@@ -613,7 +616,21 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> implements
*/
public getTagsForRoom(room: Room): TagID[] {
const algorithmTags = this.algorithm.getTagsForRoom(room);
- if (!algorithmTags) return [DefaultTagID.Untagged];
+ if (!algorithmTags) {
+ if (SettingsStore.getValue("unifiedRoomList")) {
+ return [DefaultTagID.Unified];
+ } else {
+ return [DefaultTagID.Untagged];
+ }
+ }
+ const dmTagIndex = algorithmTags.indexOf(DefaultTagID.DM);
+ if (dmTagIndex !== -1) {
+ algorithmTags[dmTagIndex] = DefaultTagID.Unified;
+ }
+ const untaggedTagIndex = algorithmTags.indexOf(DefaultTagID.Untagged);
+ if (untaggedTagIndex !== -1) {
+ algorithmTags[untaggedTagIndex] = DefaultTagID.Unified;
+ }
return algorithmTags;
}
diff --git a/src/stores/room-list/algorithms/Algorithm.ts b/src/stores/room-list/algorithms/Algorithm.ts
index e296676149..06147137b3 100644
--- a/src/stores/room-list/algorithms/Algorithm.ts
+++ b/src/stores/room-list/algorithms/Algorithm.ts
@@ -75,6 +75,7 @@ export class Algorithm extends EventEmitter {
* Set to true to suspend emissions of algorithm updates.
*/
public updatesInhibited = false;
+ private unifiedRoomList: boolean = true;
public start(): void {
CallStore.instance.on(CallStoreEvent.ConnectedCalls, this.onConnectedCalls);
@@ -106,6 +107,10 @@ export class Algorithm extends EventEmitter {
return this._cachedRooms;
}
+ public setUnifiedRoomList(unifiedRoomList: boolean): void {
+ this.unifiedRoomList = unifiedRoomList;
+ }
+
/**
* Awaitable version of the sticky room setter.
* @param val The new room to sticky.
@@ -513,7 +518,10 @@ export class Algorithm extends EventEmitter {
}
if (!inTag) {
- if (DMRoomMap.shared().getUserIdForRoomId(room.roomId)) {
+ if (this.unifiedRoomList) {
+ // SC: Unified room list for DMs and groups
+ newTags[DefaultTagID.Unified].push(room);
+ } else if (DMRoomMap.shared().getUserIdForRoomId(room.roomId)) {
newTags[DefaultTagID.DM].push(room);
} else {
newTags[DefaultTagID.Untagged].push(room);
@@ -557,7 +565,13 @@ export class Algorithm extends EventEmitter {
tags.push(...this.getTagsOfJoinedRoom(room));
}
- if (!tags.length) tags.push(DefaultTagID.Untagged);
+ if (!tags.length) {
+ if (this.unifiedRoomList) {
+ tags.push(DefaultTagID.Unified);
+ } else {
+ tags.push(DefaultTagID.Untagged);
+ }
+ }
return tags;
}
@@ -567,7 +581,7 @@ export class Algorithm extends EventEmitter {
if (tags.length === 0) {
// Check to see if it's a DM if it isn't anything else
- if (DMRoomMap.shared().getUserIdForRoomId(room.roomId)) {
+ if (DMRoomMap.shared().getUserIdForRoomId(room.roomId) && !this.unifiedRoomList) {
tags = [DefaultTagID.DM];
}
}
diff --git a/src/stores/room-list/models.ts b/src/stores/room-list/models.ts
index 50cecda665..8efc2d040d 100644
--- a/src/stores/room-list/models.ts
+++ b/src/stores/room-list/models.ts
@@ -13,6 +13,7 @@ export enum DefaultTagID {
LowPriority = "m.lowpriority",
Favourite = "m.favourite",
DM = "im.vector.fake.direct",
+ Unified = "chat.schildi.fake.unified",
Conference = "im.vector.fake.conferences",
ServerNotice = "m.server_notice",
Suggested = "im.vector.fake.suggested",
@@ -21,6 +22,7 @@ export enum DefaultTagID {
export const OrderedDefaultTagIDs = [
DefaultTagID.Invite,
DefaultTagID.Favourite,
+ DefaultTagID.Unified,
DefaultTagID.DM,
DefaultTagID.Conference,
DefaultTagID.Untagged,
--
2.47.0

View File

@ -0,0 +1,25 @@
From 52a8331e22a92e72cd470924a898bb5dc0050c12 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 17 Dec 2023 11:11:58 +0100
Subject: Don't sort muted rooms to bottom, I still want to see them.
---
.../room-list/algorithms/list-ordering/OrderingAlgorithm.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/stores/room-list/algorithms/list-ordering/OrderingAlgorithm.ts b/src/stores/room-list/algorithms/list-ordering/OrderingAlgorithm.ts
index 67ee1ca084..67dcaa3855 100644
--- a/src/stores/room-list/algorithms/list-ordering/OrderingAlgorithm.ts
+++ b/src/stores/room-list/algorithms/list-ordering/OrderingAlgorithm.ts
@@ -38,7 +38,7 @@ export abstract class OrderingAlgorithm {
}
public get isMutedToBottom(): boolean {
- return this.sortingAlgorithm === SortAlgorithm.Recent;
+ return this.sortingAlgorithm === SortAlgorithm.Recent && false;
}
/**
--
2.47.0

View File

@ -0,0 +1,29 @@
From 6b180bc740d00b2c12e7484611436ed0a0441d91 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Thu, 14 Dec 2023 10:32:10 +0100
Subject: Don't preview reactions
---
src/stores/room-list/MessagePreviewStore.ts | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/stores/room-list/MessagePreviewStore.ts b/src/stores/room-list/MessagePreviewStore.ts
index e0e06ec980..7ee27f8402 100644
--- a/src/stores/room-list/MessagePreviewStore.ts
+++ b/src/stores/room-list/MessagePreviewStore.ts
@@ -57,10 +57,12 @@ const PREVIEWS: Record<
isState: false,
previewer: new StickerEventPreview(),
},
+ /*
"m.reaction": {
isState: false,
previewer: new ReactionEventPreview(),
},
+ */
[M_POLL_START.name]: {
isState: false,
previewer: new PollStartEventPreview(),
--
2.47.0

View File

@ -0,0 +1,30 @@
From c8326bf3b2024cb21dae646d552f440e8be31a92 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Wed, 17 Nov 2021 12:50:25 +0100
Subject: Hide the "mute" notification state the same way as the other states
This can get in the way of the "marked as unread" icon otherwise.
Furthermore, I didn't really like it showing there persistently either
way.
---
src/components/views/rooms/RoomTile.tsx | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/components/views/rooms/RoomTile.tsx b/src/components/views/rooms/RoomTile.tsx
index 93fb42f447..09df8eaac9 100644
--- a/src/components/views/rooms/RoomTile.tsx
+++ b/src/components/views/rooms/RoomTile.tsx
@@ -304,7 +304,9 @@ export class RoomTile extends React.PureComponent<ClassProps, State> {
// Only show the icon by default if the room is overridden to muted.
// TODO: [FTUE Notifications] Probably need to detect global mute state
- mx_RoomTile_notificationsButton_show: state === RoomNotifState.Mute,
+ //mx_RoomTile_notificationsButton_show: state === RoomNotifState.Mute,
+ // SchildiChat: never show the icon by default. This gets in the way of the "marked as unread" icon.
+ mx_RoomTile_notificationsButton_show: false,
});
return (
--
2.47.0

View File

@ -0,0 +1,25 @@
From ad6ae2391b4e9ffafcdfd9a9cd369e77714f8e92 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Fri, 10 May 2024 18:58:32 +0200
Subject: Allow muted rooms to render as unread
---
src/RoomNotifs.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/RoomNotifs.ts b/src/RoomNotifs.ts
index 7c281d0d2d..f06be85437 100644
--- a/src/RoomNotifs.ts
+++ b/src/RoomNotifs.ts
@@ -255,7 +255,7 @@ export function determineUnreadState(
return { symbol: "!", count: 1, level: NotificationLevel.Highlight };
}
- if (getRoomNotifsState(room.client, room.roomId) === RoomNotifState.Mute) {
+ if (false && getRoomNotifsState(room.client, room.roomId) === RoomNotifState.Mute) {
return { symbol: null, count: 0, level: NotificationLevel.None };
}
--
2.47.0

View File

@ -0,0 +1,25 @@
From bdd02fd32781cbd9f592bee2dece18e758a4b0a3 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 30 Aug 2020 15:33:01 +0200
Subject: Increase default visible tiles
---
src/stores/room-list/ListLayout.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/stores/room-list/ListLayout.ts b/src/stores/room-list/ListLayout.ts
index ff60309e08..275b6d330b 100644
--- a/src/stores/room-list/ListLayout.ts
+++ b/src/stores/room-list/ListLayout.ts
@@ -74,7 +74,7 @@ export class ListLayout {
public get defaultVisibleTiles(): number {
// This number is what "feels right", and mostly subject to design's opinion.
- return 8;
+ return 50;
}
public tilesWithPadding(n: number, paddingPx: number): number {
--
2.47.0

View File

@ -0,0 +1,92 @@
From 1a73e666d193a583aa025fb75a9afdf59f1d36fa Mon Sep 17 00:00:00 2001
From: su-ex <codeworks@supercable.onl>
Date: Sun, 26 May 2024 10:43:36 +0200
Subject: Bring back showSpaceDMBadges setting, force-enabled for now
TODO settings UI
Co-authored-by: SpiritCroc <dev@spiritcroc.de>
---
src/settings/Settings.tsx | 5 +++++
src/stores/spaces/SpaceStore.ts | 25 +++++++++++++++++++++++++
2 files changed, 30 insertions(+)
diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx
index ae4b0ea644..12d9965cf1 100644
--- a/src/settings/Settings.tsx
+++ b/src/settings/Settings.tsx
@@ -199,6 +199,11 @@ export const SETTINGS: { [setting: string]: ISetting } = {
default: true,
controller: new ReloadOnChangeController(),
},
+ "Spaces.showSpaceDMBadges": {
+ displayName: _td("Show notification badges for People in Spaces"),
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ default: true,
+ },
// SC settings end
"feature_video_rooms": {
isFeature: true,
diff --git a/src/stores/spaces/SpaceStore.ts b/src/stores/spaces/SpaceStore.ts
index 90358f3310..60df05478a 100644
--- a/src/stores/spaces/SpaceStore.ts
+++ b/src/stores/spaces/SpaceStore.ts
@@ -154,9 +154,17 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
/** Whether the feature flag is set for MSC3946 */
private _msc3946ProcessDynamicPredecessor: boolean = SettingsStore.getValue("feature_dynamic_room_predecessors");
+ // SC start
+ private _showSpaceDMBadges = true;
+ // SC end
+
public constructor() {
super(defaultDispatcher, {});
+ // SC start
+ SettingsStore.monitorSetting("Spaces.showSpaceDMBadges", null);
+ // SC end
+
SettingsStore.monitorSetting("Spaces.allRoomsInHome", null);
SettingsStore.monitorSetting("Spaces.enabledMetaSpaces", null);
SettingsStore.monitorSetting("Spaces.showPeopleInSpace", null);
@@ -192,6 +200,10 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
return this._allRoomsInHome;
}
+ public get showSpaceDMBadges(): boolean { // SC
+ return this._showSpaceDMBadges;
+ }
+
public setActiveRoomInSpace(space: SpaceKey): void {
if (!isMetaSpace(space) && !this.matrixClient?.getRoom(space)?.isSpaceRoom()) return;
if (space !== this.activeSpace) this.setActiveSpace(space, false);
@@ -701,6 +713,10 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
if (room.isSpaceRoom() || !flattenedRoomsForSpace.has(room.roomId)) return false;
+ if (this.showSpaceDMBadges) { // SC
+ return true;
+ }
+
if (dmBadgeSpace && DMRoomMap.shared().getUserIdForRoomId(room.roomId)) {
return s === dmBadgeSpace;
}
@@ -1277,6 +1293,15 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
break;
}
+ case "Spaces.showSpaceDMBadges": { // SC
+ const newValue = SettingsStore.getValue("Spaces.showSpaceDMBadges");
+ if (this.showSpaceDMBadges !== newValue) {
+ this._showSpaceDMBadges = newValue;
+ this.rebuildSpaceHierarchy(); // rebuild everything
+ }
+ break;
+ }
+
case "Spaces.enabledMetaSpaces": {
const newValue = SettingsStore.getValue("Spaces.enabledMetaSpaces");
const enabledMetaSpaces = metaSpaceOrder.filter((k) => newValue[k]);
--
2.47.0

View File

@ -0,0 +1,134 @@
From 911b4438f6f2240e99d3a80aed35ff3e4f1d70ff Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Wed, 29 May 2024 19:32:42 +0200
Subject: Squashed: Freeform reactions from tadzik/freeform-reactions-upstream
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
commit 9eea56b0080db3720efa49b457707bcde3be6474
Merge: 06f81c9662 8570f16e31
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
Date: Tue Jun 20 09:57:19 2023 +0200
Merge branch 'develop' into tadzik/freeform-reactions-upstream
commit 06f81c9662fbe033b4eac859d7e14e0ab24a6e91
Merge: ad4fef85b1 0d6a550c33
Author: Michael Telatynski <7t3chguy@gmail.com>
Date: Wed Aug 31 09:06:49 2022 +0100
Merge branch 'develop' into tadzik/freeform-reactions
commit ad4fef85b160087b8017b9ae9cf9aebfd5348f41
Merge: 689b57c0b9 5aae974e93
Author: Tadeusz Sośnierz <tadzik@tadzik.net>
Date: Sun Aug 28 10:11:48 2022 +0200
Merge branch 'develop' into tadzik/freeform-reactions
commit 689b57c0b91e12907a8dbc3fac3ed10302a11e4a
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
Date: Fri May 20 10:35:06 2022 +0200
Fix conflict resolution fail in EmojiPicker
commit 70a8e212b748584949b37bc99b72acffce2fd148
Merge: 215df55f13 a0cdc93642
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
Date: Fri May 20 10:25:17 2022 +0200
Merge branch 'develop' into tadzik/freeform-reactions-upstream
commit 215df55f13162bdc8eb13da5219763c56f560dd0
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
Date: Tue Aug 17 16:30:06 2021 +0200
Disable freeform emoji reactions in the message composer
commit 6bb8263007e077d22929fcc1fb439d94a4f15c6f
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
Date: Tue Aug 17 12:12:28 2021 +0200
Add more typing to EmojiPicker
commit b2a1728318a8a5496345797995c1ec09ae3f88e6
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
Date: Tue Aug 17 11:52:35 2021 +0200
Make free-form reaction button translatable
commit f4adaf00b805baba454fbceb41cc5c081ec886a7
Author: Tadeusz Sośnierz <tadeusz@sosnierz.com>
Date: Tue Aug 17 11:29:22 2021 +0200
Allow sending free-form reactions
Signed-off-by: Tadeusz Sośnierz <tadeusz@sosnierz.com>
---
src/components/views/emojipicker/EmojiPicker.tsx | 15 +++++++++++++++
.../views/emojipicker/ReactionPicker.tsx | 1 +
2 files changed, 16 insertions(+)
diff --git a/src/components/views/emojipicker/EmojiPicker.tsx b/src/components/views/emojipicker/EmojiPicker.tsx
index 4806ad4216..7d4a4353e2 100644
--- a/src/components/views/emojipicker/EmojiPicker.tsx
+++ b/src/components/views/emojipicker/EmojiPicker.tsx
@@ -17,6 +17,7 @@ import Header from "./Header";
import Search from "./Search";
import Preview from "./Preview";
import QuickReactions from "./QuickReactions";
+import AccessibleButton from '../elements/AccessibleButton';
import Category, { CategoryKey, ICategory } from "./Category";
import { filterBoolean } from "../../../utils/arrays";
import {
@@ -37,6 +38,7 @@ export const EMOJIS_PER_ROW = 8;
const ZERO_WIDTH_JOINER = "\u200D";
interface IProps {
+ allowUnlisted?: boolean;
selectedEmojis?: Set<string>;
onChoose(unicode: string): boolean;
onFinished(): void;
@@ -341,6 +343,10 @@ class EmojiPicker extends React.Component<IProps, IState> {
}
};
+ private reactWith = (reaction: string): void => {
+ this.props.onChoose(reaction);
+ };
+
private static categoryHeightForEmojiCount(count: number): number {
if (count === 0) {
return 0;
@@ -396,6 +402,15 @@ class EmojiPicker extends React.Component<IProps, IState> {
return categoryElement;
})}
</AutoHideScrollbar>
+ {
+ (this.props.allowUnlisted && this.state.filter) &&
+ <AccessibleButton
+ kind="link"
+ onClick={() => this.reactWith(this.state.filter)}
+ >
+ { _t('React with "%(reaction)s"', { reaction: this.state.filter }) }
+ </AccessibleButton>
+ }
{this.state.previewEmoji ? (
<Preview emoji={this.state.previewEmoji} />
) : (
diff --git a/src/components/views/emojipicker/ReactionPicker.tsx b/src/components/views/emojipicker/ReactionPicker.tsx
index 2c2eb442a0..62bfd2ea0f 100644
--- a/src/components/views/emojipicker/ReactionPicker.tsx
+++ b/src/components/views/emojipicker/ReactionPicker.tsx
@@ -123,6 +123,7 @@ class ReactionPicker extends React.Component<IProps, IState> {
public render(): React.ReactNode {
return (
<EmojiPicker
+ allowUnlisted={true}
onChoose={this.onChoose}
isEmojiDisabled={this.isEmojiDisabled}
onFinished={this.props.onFinished}
--
2.47.0

View File

@ -0,0 +1,32 @@
From 3d8a7358ea859b70bd713e758cb3efc273eb56ef Mon Sep 17 00:00:00 2001
From: su-ex <codeworks@supercable.onl>
Date: Sat, 22 Apr 2023 12:15:18 +0200
Subject: Allow reactions to take more space
---
res/css/views/messages/_ReactionsRowButton.pcss | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/res/css/views/messages/_ReactionsRowButton.pcss b/res/css/views/messages/_ReactionsRowButton.pcss
index dd9d7ddb47..9ebe95021e 100644
--- a/res/css/views/messages/_ReactionsRowButton.pcss
+++ b/res/css/views/messages/_ReactionsRowButton.pcss
@@ -14,6 +14,7 @@ Please see LICENSE files in the repository root for full details.
background-color: var(--cpd-color-gray-200);
user-select: none;
align-items: center;
+ max-width: calc(100% - 40px);;
&.mx_ReactionsRowButton_selected {
background-color: $accent-300;
@@ -25,7 +26,6 @@ Please see LICENSE files in the repository root for full details.
}
.mx_ReactionsRowButton_content {
- max-width: 100px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
--
2.47.0

View File

@ -0,0 +1,79 @@
From 89e083af2be11b17c756c6078a43ce1c6c305cc2 Mon Sep 17 00:00:00 2001
From: su-ex <codeworks@supercable.onl>
Date: Thu, 30 May 2024 14:35:16 +0200
Subject: On space switch don't automatically show last opened room
---
src/components/structures/MatrixChat.tsx | 18 +++++++++++++++++-
src/settings/Settings.tsx | 6 ++++++
src/stores/spaces/SpaceStore.ts | 1 +
3 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx
index d0edcccd4f..3146200c68 100644
--- a/src/components/structures/MatrixChat.tsx
+++ b/src/components/structures/MatrixChat.tsx
@@ -1457,7 +1457,15 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
if (this.screenAfterLogin && this.screenAfterLogin.screen) {
this.showScreen(this.screenAfterLogin.screen, this.screenAfterLogin.params);
this.screenAfterLogin = undefined;
- } else if (localStorage && localStorage.getItem("mx_last_room_id")) {
+ } else if (
+ !SettingsStore.getValue("Spaces.returnToPreviouslyOpenedRoom") &&
+ localStorage &&
+ localStorage.getItem("mx_active_space") &&
+ localStorage.getItem("mx_active_space")[0] === "!"
+ ) {
+ // SC: Show the last viewed space
+ this.viewLastSpace();
+ } else if (SettingsStore.getValue("Spaces.returnToPreviouslyOpenedRoom") && localStorage && localStorage.getItem("mx_last_room_id")) {
// Before defaulting to directory, show the last viewed room
this.viewLastRoom();
} else {
@@ -1469,6 +1477,14 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
}
}
+ private viewLastSpace(): void { // SC
+ // SC-ToDo: Make this work for meta spaces
+ dis.dispatch({
+ action: Action.ViewRoom,
+ room_id: localStorage.getItem("mx_active_space"),
+ });
+ }
+
private viewLastRoom(): void {
dis.dispatch<ViewRoomPayload>({
action: Action.ViewRoom,
diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx
index 12d9965cf1..3e9fb95799 100644
--- a/src/settings/Settings.tsx
+++ b/src/settings/Settings.tsx
@@ -204,6 +204,12 @@ export const SETTINGS: { [setting: string]: ISetting } = {
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
default: true,
},
+ "Spaces.returnToPreviouslyOpenedRoom": {
+ displayName: _td("Return to the room previously opened in a space"),
+ description: _td("If disabled, the space overview will be shown when switching to another space."),
+ supportedLevels: LEVELS_ACCOUNT_SETTINGS,
+ default: false,
+ },
// SC settings end
"feature_video_rooms": {
isFeature: true,
diff --git a/src/stores/spaces/SpaceStore.ts b/src/stores/spaces/SpaceStore.ts
index 60df05478a..0be7ba190a 100644
--- a/src/stores/spaces/SpaceStore.ts
+++ b/src/stores/spaces/SpaceStore.ts
@@ -265,6 +265,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
// else if the last viewed room in this space is joined then view that
// else view space home or home depending on what is being clicked on
if (
+ SettingsStore.getValue("Spaces.returnToPreviouslyOpenedRoom") &&
roomId &&
cliSpace?.getMyMembership() !== KnownMembership.Invite &&
this.matrixClient.getRoom(roomId)?.getMyMembership() === KnownMembership.Join &&
--
2.47.0

View File

@ -0,0 +1,24 @@
From ddf0d3e26a63b1c3602a78dc3f2253f170e93b90 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Tue, 9 Aug 2022 09:32:19 +0200
Subject: Exclude spaces from breadcrumbs
---
src/stores/BreadcrumbsStore.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/stores/BreadcrumbsStore.ts b/src/stores/BreadcrumbsStore.ts
index 9859f24015..957b54286c 100644
--- a/src/stores/BreadcrumbsStore.ts
+++ b/src/stores/BreadcrumbsStore.ts
@@ -137,6 +137,7 @@ export class BreadcrumbsStore extends AsyncStoreWithClient<IState> {
}
private async appendRoom(room: Room): Promise<void> {
+ if (room.isSpaceRoom()) return;
let updated = false;
const rooms = (this.state.rooms || []).slice(); // cheap clone
const msc3946ProcessDynamicPredecessor = SettingsStore.getValue("feature_dynamic_room_predecessors");
--
2.47.0

View File

@ -0,0 +1,24 @@
From 684ed334d998c827cfadfdf1c5f46e5b6db722bc Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Mon, 19 Aug 2024 20:27:33 +0200
Subject: Stop the search bar wobble
---
res/css/_common.pcss | 1 +
1 file changed, 1 insertion(+)
diff --git a/res/css/_common.pcss b/res/css/_common.pcss
index 05a3dac067..7861af6381 100644
--- a/res/css/_common.pcss
+++ b/res/css/_common.pcss
@@ -181,6 +181,7 @@ input[type="search"].mx_textinput_icon {
padding-left: 36px;
background-repeat: no-repeat;
background-position: 10px center;
+ min-height: 33px;
}
/* FIXME THEME - Tint by CSS rather than referencing a duplicate asset */
--
2.47.0

View File

@ -0,0 +1,24 @@
From fb1f422cbea4bb050088e5dbb02c342e70a2aebb Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 13 Oct 2024 11:23:54 +0200
Subject: Import SC compound theme overrides
---
res/css/_common.pcss | 1 +
1 file changed, 1 insertion(+)
diff --git a/res/css/_common.pcss b/res/css/_common.pcss
index 7861af6381..f7a660a339 100644
--- a/res/css/_common.pcss
+++ b/res/css/_common.pcss
@@ -11,6 +11,7 @@ Please see LICENSE files in the repository root for full details.
@import url("@vector-im/compound-design-tokens/assets/web/css/compound-design-tokens.css") layer(compound);
@import url("@vector-im/compound-web/dist/style.css");
+@import "./sc-cpd-overrides.css";
@import "./_font-sizes.pcss";
@import "./_animations.pcss";
@import "./_spacing.pcss";
--
2.47.0

View File

@ -0,0 +1,26 @@
From da372cc9cf48128a4918917298c3904f0773e7ae Mon Sep 17 00:00:00 2001
From: su-ex <codeworks@supercable.onl>
Date: Tue, 7 Sep 2021 19:41:52 +0200
Subject: No damn avatar background in room list
---
src/components/structures/BackdropPanel.tsx | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/components/structures/BackdropPanel.tsx b/src/components/structures/BackdropPanel.tsx
index 80c21235cc..a9c464f4b2 100644
--- a/src/components/structures/BackdropPanel.tsx
+++ b/src/components/structures/BackdropPanel.tsx
@@ -13,6 +13,9 @@ interface IProps {
}
export const BackdropPanel: React.FC<IProps> = ({ backgroundImage, blurMultiplier }) => {
+ // SC: no damn avatar background in room list
+ return null;
+
if (!backgroundImage) return null;
const styles: CSSProperties = {};
--
2.47.0

View File

@ -0,0 +1,29 @@
From 0fa53f5f6b26b88aed25ab425ba04ebc28509684 Mon Sep 17 00:00:00 2001
From: su-ex <codeworks@supercable.onl>
Date: Tue, 22 Dec 2020 19:16:28 +0100
Subject: No red messages in 1:1 chats Close SchildiChat/schildichat-desktop#13
---
src/components/views/rooms/EventTile.tsx | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/components/views/rooms/EventTile.tsx b/src/components/views/rooms/EventTile.tsx
index eca61f7d22..59dd12e7ab 100644
--- a/src/components/views/rooms/EventTile.tsx
+++ b/src/components/views/rooms/EventTile.tsx
@@ -683,6 +683,12 @@ export class UnwrappedEventTile extends React.Component<EventTileProps, IState>
return false;
}
+ // don't show highlights in 1:1 rooms
+ const room = cli.getRoom(this.props.mxEvent.getRoomId());
+ if (room && room.currentState.getJoinedMemberCount() === 2) {
+ return false;
+ }
+
return !!(actions?.tweaks.highlight || previousActions?.tweaks.highlight);
}
--
2.47.0

View File

@ -0,0 +1,61 @@
From 6c031a5258cc31485b889b5487d5e44ebac2c8de Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 13 Oct 2024 13:26:16 +0200
Subject: Always apply corner radius to all edges of the bubble
---
res/css/views/rooms/_EventBubbleTile.pcss | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/res/css/views/rooms/_EventBubbleTile.pcss b/res/css/views/rooms/_EventBubbleTile.pcss
index 3a42cde9bb..a5f5480010 100644
--- a/res/css/views/rooms/_EventBubbleTile.pcss
+++ b/res/css/views/rooms/_EventBubbleTile.pcss
@@ -283,6 +283,8 @@ Please see LICENSE files in the repository root for full details.
margin-inline: var(--EventTile_bubble_line-margin-inline-start) var(--EventTile_bubble_line-margin-inline-end);
border-top-left-radius: var(--cornerRadius);
border-top-right-radius: var(--cornerRadius);
+ border-bottom-left-radius: var(--cornerRadius);
+ border-bottom-right-radius: var(--cornerRadius);
/* the selector here is quite weird because timestamps can appear linked & unlinked and in different places */
/* in the DOM depending on the specific rendering context */
@@ -377,7 +379,7 @@ Please see LICENSE files in the repository root for full details.
}
&.mx_EventTile_continuation[data-self="false"] .mx_EventTile_line {
- border-top-left-radius: 0;
+ //border-top-left-radius: 0;
.mx_MImageBody .mx_MImageBody_thumbnail_container,
.mx_MVideoBody .mx_MVideoBody_container,
@@ -385,7 +387,7 @@ Please see LICENSE files in the repository root for full details.
.mx_MediaBody,
.mx_MLocationBody_map,
.mx_MBeaconBody {
- border-top-left-radius: 0;
+ //border-top-left-radius: 0;
}
}
&.mx_EventTile_lastInSection[data-self="false"] .mx_EventTile_line {
@@ -402,7 +404,7 @@ Please see LICENSE files in the repository root for full details.
}
&.mx_EventTile_continuation[data-self="true"] .mx_EventTile_line {
- border-top-right-radius: 0;
+ //border-top-right-radius: 0;
.mx_MImageBody .mx_MImageBody_thumbnail_container,
.mx_MVideoBody .mx_MVideoBody_container,
@@ -410,7 +412,7 @@ Please see LICENSE files in the repository root for full details.
.mx_MediaBody,
.mx_MLocationBody_map,
.mx_MBeaconBody {
- border-top-right-radius: 0;
+ //border-top-right-radius: 0;
}
}
&.mx_EventTile_lastInSection[data-self="true"] .mx_EventTile_line {
--
2.47.0

View File

@ -0,0 +1,25 @@
From 5a59cf2ab1fc5483be4ab0a157072d6bec18d052 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 13 Oct 2024 13:53:07 +0200
Subject: Always show timestamps by default
---
src/settings/Settings.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx
index 3e9fb95799..b76ec5feb2 100644
--- a/src/settings/Settings.tsx
+++ b/src/settings/Settings.tsx
@@ -644,7 +644,7 @@ export const SETTINGS: { [setting: string]: ISetting } = {
"alwaysShowTimestamps": {
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
displayName: _td("settings|always_show_message_timestamps"),
- default: false,
+ default: true,
},
"userTimezone": {
supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,
--
2.47.0

View File

@ -0,0 +1,25 @@
From 2968ddb18dfe25fb1f0aaa08e796a7d0960e4263 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Thu, 17 Oct 2024 19:40:51 +0200
Subject: Enable custom emote rendering by default
---
src/settings/Settings.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx
index b76ec5feb2..51404c88d4 100644
--- a/src/settings/Settings.tsx
+++ b/src/settings/Settings.tsx
@@ -508,7 +508,7 @@ export const SETTINGS: { [setting: string]: ISetting } = {
description: _td("labs|render_reaction_images_description"),
supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED,
supportedLevelsAreOrdered: true,
- default: false,
+ default: true,
},
/**
* With the transition to Compound we are moving to a base font size
--
2.47.0

View File

@ -0,0 +1,25 @@
From de706cd1c2fcca44f8c04467f675477045572670 Mon Sep 17 00:00:00 2001
From: SpiritCroc <dev@spiritcroc.de>
Date: Sun, 27 Oct 2024 19:24:26 +0100
Subject: Enable chat previews by default
---
src/stores/room-list/ListLayout.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/stores/room-list/ListLayout.ts b/src/stores/room-list/ListLayout.ts
index 275b6d330b..3a188451e7 100644
--- a/src/stores/room-list/ListLayout.ts
+++ b/src/stores/room-list/ListLayout.ts
@@ -18,7 +18,7 @@ interface ISerializedListLayout {
export class ListLayout {
private _n = 0;
- private _previews = false;
+ private _previews = true;
private _collapsed = false;
public constructor(public readonly tagId: TagID) {
--
2.47.0