diff --git a/src/pages/channels/messaging/MessageArea.tsx b/src/pages/channels/messaging/MessageArea.tsx
index 9753abcd..f69ae678 100644
--- a/src/pages/channels/messaging/MessageArea.tsx
+++ b/src/pages/channels/messaging/MessageArea.tsx
@@ -94,16 +94,6 @@ export function MessageArea({ id }: Props) {
setScrollState({ type: "Free" });
}
});
-
- /*if (v.type === 'StayAtBottom') {
- if (scrollState.current.type === 'Bottom' || atBottom()) {
- scrollState.current = { type: 'ScrollToBottom', smooth: v.smooth };
- } else {
- scrollState.current = { type: 'Free' };
- }
- } else {
- scrollState.current = v;
- }*/
}
// ? Determine if we are at the bottom of the scroll container.
@@ -153,40 +143,6 @@ export function MessageArea({ id }: Props) {
}
}, [ status, state ]);
- // ? Scroll to the bottom before the browser paints.
- useLayoutEffect(() => {
- // ! FIXME: NO REACTIVITY
- if (scrollState.current.type === "ScrollToBottom") {
- setScrollState({ type: "Bottom", scrollingUntil: + new Date() + 150 });
-
- animateScroll.scrollToBottom({
- container: ref.current,
- duration: scrollState.current.smooth ? 150 : 0
- });
- } else if (scrollState.current.type === "OffsetTop") {
- animateScroll.scrollTo(
- Math.max(
- 101,
- ref.current.scrollTop +
- (ref.current.scrollHeight - scrollState.current.previousHeight)
- ),
- {
- container: ref.current,
- duration: 0
- }
- );
-
- setScrollState({ type: "Free" });
- } else if (scrollState.current.type === "ScrollTop") {
- animateScroll.scrollTo(scrollState.current.y, {
- container: ref.current,
- duration: 0
- });
-
- setScrollState({ type: "Free" });
- }
- }, [scrollState]);
-
// ? When the container is scrolled.
// ? Also handle StayAtBottom
useEffect(() => {
diff --git a/src/pages/channels/messaging/MessageRenderer.tsx b/src/pages/channels/messaging/MessageRenderer.tsx
index 1eae8e7e..6abbf466 100644
--- a/src/pages/channels/messaging/MessageRenderer.tsx
+++ b/src/pages/channels/messaging/MessageRenderer.tsx
@@ -1,5 +1,6 @@
import { decodeTime } from "ulid";
import { memo } from "preact/compat";
+import { defer } from "../../../lib/defer";
import MessageEditor from "./MessageEditor";
import { Children } from "../../../types/Preact";
import ConversationStart from "./ConversationStart";
@@ -15,6 +16,7 @@ import { AppContext } from "../../../context/revoltjs/RevoltClient";
import RequiresOnline from "../../../context/revoltjs/RequiresOnline";
import { internalSubscribe, internalEmit } from "../../../lib/eventEmitter";
import { SystemMessage } from "../../../components/common/messaging/SystemMessage";
+import { Users } from "revolt.js/dist/api/objects";
interface Props {
id: string;
@@ -89,6 +91,12 @@ function MessageRenderer({ id, state, queue }: Props) {
head = curAuthor !== prevAuthor || Math.abs(btime - atime) >= 420000;
}
+ let blocked = 0;
+ function pushBlocked() {
+ render.push({ blocked } blocked messages);
+ blocked = 0;
+ }
+
for (const message of state.messages) {
if (previous) {
compare(
@@ -102,21 +110,30 @@ function MessageRenderer({ id, state, queue }: Props) {
if (message.author === "00000000000000000000000000") {
render.push();
} else {
- render.push(
-
- : undefined
- }
- attachContext />
- );
+ // ! FIXME: temp solution
+ if (client.users.get(message.author)?.relationship === Users.Relationship.Blocked) {
+ blocked++;
+ } else {
+ if (blocked > 0) pushBlocked();
+
+ render.push(
+
+ : undefined
+ }
+ attachContext />
+ );
+ }
}
previous = message;
}
+
+ if (blocked > 0) pushBlocked();
const nonces = state.messages.map(x => x.nonce);
if (state.atBottom) {
diff --git a/src/pages/settings/GenericSettings.tsx b/src/pages/settings/GenericSettings.tsx
index 5f11d615..484ea683 100644
--- a/src/pages/settings/GenericSettings.tsx
+++ b/src/pages/settings/GenericSettings.tsx
@@ -62,7 +62,7 @@ export function GenericSettings({ pages, switchPage, category, custom, children,
content={
isTouchscreenDevice
? theme["primary-header"]
- : theme["background"]
+ : theme["secondary-background"]
}
/>