Skip to content

Commit d338628

Browse files
committed
Merge branch 'master' into mv3
2 parents ebf3a67 + 579d9a8 commit d338628

File tree

6 files changed

+37
-15
lines changed

6 files changed

+37
-15
lines changed

src/components/ChatSummary.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
clearTimeout(autoHideTimeout);
2121
autoHideTimeout = null;
2222
}
23-
};
23+
};
2424
2525
$: if (summary) {
2626
dismissed = false;

src/components/HyperchatButton.svelte

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,6 @@
6464
</div>
6565

6666
<style>
67-
:global(div#contents.style-scope.yt-live-chat-renderer) {
68-
z-index: 2;
69-
}
70-
7167
#hc-buttons {
7268
float: right;
7369
display: flex;

src/components/PinnedMessage.svelte

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,24 @@
1010
1111
let dismissed = false;
1212
let shorten = false;
13+
let autoHideTimeout: NodeJS.Timeout | null = null;
1314
const classes = 'rounded inline-flex flex-col overflow-visible ' +
1415
'bg-secondary-900 p-2 w-full text-white z-10 shadow';
1516
16-
const onShorten = () => { shorten = !shorten; };
17-
17+
const onShorten = () => {
18+
shorten = !shorten;
19+
if (autoHideTimeout) {
20+
clearTimeout(autoHideTimeout);
21+
autoHideTimeout = null;
22+
}
23+
};
24+
1825
$: if (pinned) {
1926
dismissed = false;
2027
shorten = false;
28+
if (pinned.showtime) {
29+
autoHideTimeout = setTimeout(() => { shorten = true; }, pinned.showtime);
30+
}
2131
}
2232
2333
const dispatch = createEventDispatcher();

src/ts/chat-parser.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ const splitRunsByNewline = (runs: Ytc.ParsedRun[], maxSplit: number = -1): Ytc.P
7575
return acc;
7676
}, [[]]);
7777

78-
const parseChatSummary = (renderer: Ytc.AddChatItem, isEphemeral: boolean, bannerTimeoutMs: number): Ytc.ParsedSummary | undefined => {
78+
const parseChatSummary = (renderer: Ytc.AddChatItem, showtime: number): Ytc.ParsedSummary | undefined => {
7979
if (!renderer.liveChatBannerChatSummaryRenderer) {
8080
return;
8181
}
@@ -102,7 +102,7 @@ const parseChatSummary = (renderer: Ytc.AddChatItem, isEphemeral: boolean, banne
102102
message: splitRuns[2],
103103
},
104104
id: baseRenderer.liveChatSummaryId,
105-
showtime: isEphemeral ? bannerTimeoutMs : 0,
105+
showtime: showtime,
106106
};
107107
return item;
108108
}
@@ -231,8 +231,14 @@ const parseMessageDeletedAction = (action: Ytc.MessageDeletedAction): Ytc.Parsed
231231

232232
const parseBannerAction = (action: Ytc.AddPinnedAction): Ytc.ParsedPinned | Ytc.ParsedSummary | undefined => {
233233
const baseRenderer = action.bannerRenderer.liveChatBannerRenderer;
234+
235+
// fold both auto-disappear and auto-collapse into just collapse for showtime
236+
const showtime = action.bannerProperties?.isEphemeral
237+
? (action.bannerProperties?.bannerTimeoutMs || 0)
238+
: 1000 * (action.bannerProperties?.autoCollapseDelay?.seconds || baseRenderer.bannerProperties?.autoCollapseDelay?.seconds || 0);
239+
234240
if (baseRenderer.contents.liveChatBannerChatSummaryRenderer) {
235-
return parseChatSummary(baseRenderer.contents, action.bannerProperties?.isEphemeral ?? false, action.bannerProperties?.bannerTimeoutMs ?? 0);
241+
return parseChatSummary(baseRenderer.contents, showtime);
236242
}
237243
const parsedContents = parseAddChatItemAction(
238244
{ item: baseRenderer.contents }, true
@@ -247,7 +253,8 @@ const parseBannerAction = (action: Ytc.AddPinnedAction): Ytc.ParsedPinned | Ytc.
247253
baseRenderer.header.liveChatBannerHeaderRenderer.text.runs
248254
),
249255
contents: parsedContents
250-
}
256+
},
257+
showtime: showtime,
251258
};
252259
};
253260

src/ts/chat-utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export const isValidFrameInfo = (f: Chat.UncheckedFrameInfo, port?: Chat.Port):
4242
return check;
4343
};
4444

45-
const actionTypes = new Set(['messages', 'bonk', 'delete', 'pin', 'unpin', 'playerProgress', 'forceUpdate']);
45+
const actionTypes = new Set(['messages', 'bonk', 'delete', 'pin', 'unpin', 'summary', 'playerProgress', 'forceUpdate']);
4646
export const responseIsAction = (r: Chat.BackgroundResponse): r is Chat.Actions =>
4747
actionTypes.has(r.type);
4848

src/ts/typings/ytc.d.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,19 @@ declare namespace Ytc {
8686
text: RunsObj;
8787
};
8888
};
89+
/** Gets used for pinned messages */
90+
bannerProperties?: BannerPropertiesObj;
8991
};
9092
};
91-
bannerProperties?: {
92-
isEphemeral: boolean;
93-
bannerTimeoutMs: number;
93+
/** Gets used for chat summary/redirects */
94+
bannerProperties?: BannerPropertiesObj;
95+
}
96+
97+
interface BannerPropertiesObj {
98+
isEphemeral?: boolean;
99+
bannerTimeoutMs?: number;
100+
autoCollapseDelay?: {
101+
seconds: number;
94102
}
95103
}
96104

@@ -378,6 +386,7 @@ declare namespace Ytc {
378386
header: ParsedRun[];
379387
contents: ParsedMessage;
380388
};
389+
showtime: number;
381390
}
382391

383392
interface ParsedSummary {

0 commit comments

Comments
 (0)