Skip to content

Commit 7d9bca2

Browse files
committed
코드 수정
1 parent eb71bbe commit 7d9bca2

File tree

1 file changed

+2
-82
lines changed

1 file changed

+2
-82
lines changed

src/contentScript/chzzk/inject.ts

Lines changed: 2 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,11 @@
1+
import { getReactProps } from "@utils/react";
12
import { Observer } from "../base/observer"
23
import { ChatInfo } from "@interfaces/chat";
34

4-
const getReactFiber = (node: Node) => {
5-
if (node == null) {
6-
return;
7-
}
8-
return Object.entries(node).find(([k]) =>
9-
k.startsWith("__reactFiber$")
10-
)?.[1];
11-
};
12-
13-
const getReactProps = (node: Node) => {
14-
if (node == null) {
15-
return;
16-
}
17-
return Object.entries(node).find(([k]) =>
18-
k.startsWith("__reactProps$")
19-
)?.[1];
20-
};
21-
22-
const findReactState = async (node: Node, criteria: (value: any) => {}, raw = false, tries = 0): Promise<any> => {
23-
if (node == null) {
24-
return;
25-
}
26-
let fiber = getReactFiber(node);
27-
if (fiber == null) {
28-
2
29-
if (tries > 500) {
30-
return;
31-
}
32-
return new Promise((r) => setTimeout(r, 50)).then(() =>
33-
findReactState(node, criteria, raw, tries + 1)
34-
);
35-
}
36-
fiber = fiber.return;
37-
while (fiber != null) {
38-
let state = fiber.memoizedState;
39-
while (state != null) {
40-
let value: any = state.memoizedState;
41-
if (state.queue?.pending?.hasEagerState) {
42-
value = state.queue.pending.eagerState;
43-
} else if (state.baseQueue?.hasEagerState) {
44-
value = state.baseQueue.eagerState;
45-
}
46-
if (value != null && criteria(value)) {
47-
return raw ? state : value;
48-
}
49-
state = state.next;
50-
}
51-
fiber = fiber.return;
52-
}
53-
};
54-
55-
const findReactContext = async (node: Node, criteria: (value: any) => {}, tries = 0): Promise<any> => {
56-
if (node == null) {
57-
return;
58-
}
59-
let fiber = getReactFiber(node);
60-
if (fiber == null) {
61-
if (tries > 500) {
62-
return;
63-
}
64-
return new Promise((r) => setTimeout(r, 50)).then(() =>
65-
findReactContext(node, criteria, tries + 1)
66-
);
67-
}
68-
fiber = fiber.return;
69-
while (fiber != null) {
70-
let context = fiber.dependencies?.firstContext;
71-
while (context != null) {
72-
if (context.memoizedValue != null && criteria(context.memoizedValue)) {
73-
return context.memoizedValue;
74-
}
75-
context = context.next;
76-
}
77-
fiber = fiber.return;
78-
}
79-
};
80-
815
const liveObserver = new Observer('.live_chatting_list_wrapper__a5XTV', false);
826
const vodObserver = new Observer('.vod_chatting_list__+LZHw', false)
837

848
const callback = (elem: Element | null, mr?: MutationRecord[]) => {
85-
console.log(mr);
86-
879
if (!mr) return;
8810

8911
const records = Array.from(mr);
@@ -94,8 +16,6 @@ const callback = (elem: Element | null, mr?: MutationRecord[]) => {
9416

9517
addedNodes.forEach((node) => {
9618
const _props = getReactProps(node);
97-
98-
console.log('inject chat props: ', _props)
9919
const chatMessage = _props?.children?.props?.chatMessage;
10020
const props = _props?.children?.props;
10121

@@ -107,7 +27,7 @@ const callback = (elem: Element | null, mr?: MutationRecord[]) => {
10727
(node as Element).setAttribute('data-tbc-chat-key', chatMessage?.key);
10828
(node as Element).setAttribute('data-tbc-chat-time', time);
10929
(node as Element).setAttribute('data-tbc-chat-verified', verified);
110-
(node as Element).setAttribute('data-tbc-chat-badges', JSON.stringify(badges.map((e: any) => e.imageSource)));
30+
(node as Element).setAttribute('data-tbc-chat-badges', JSON.stringify(badges?.map((e: any) => e.imageSource)));
11131

11232
const chatInfo: ChatInfo = {
11333
badges: [],

0 commit comments

Comments
 (0)