summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components
diff options
context:
space:
mode:
authorAcid Chicken (硫酸鶏) <root@acid-chicken.com>2023-03-09 14:35:38 +0900
committerGitHub <noreply@github.com>2023-03-09 14:35:38 +0900
commit93ea9c20337a652defbd90fe41932a43d252baa3 (patch)
treeeecb594593285d9f75ce30f5eeb907a0218a7135 /packages/frontend/src/components
parentenhance: アカウント削除時のクライアントの挙動をいい感... (diff)
downloadsharkey-93ea9c20337a652defbd90fe41932a43d252baa3.tar.gz
sharkey-93ea9c20337a652defbd90fe41932a43d252baa3.tar.bz2
sharkey-93ea9c20337a652defbd90fe41932a43d252baa3.zip
chore(frontend): add debugger for #6864 (#10270)
Diffstat (limited to 'packages/frontend/src/components')
-rw-r--r--packages/frontend/src/components/MkDateSeparatedList.vue19
1 files changed, 18 insertions, 1 deletions
diff --git a/packages/frontend/src/components/MkDateSeparatedList.vue b/packages/frontend/src/components/MkDateSeparatedList.vue
index 4525d3a009..d6303f9675 100644
--- a/packages/frontend/src/components/MkDateSeparatedList.vue
+++ b/packages/frontend/src/components/MkDateSeparatedList.vue
@@ -1,7 +1,9 @@
<script lang="ts">
import { defineComponent, h, PropType, TransitionGroup, useCssModule } from 'vue';
import MkAd from '@/components/global/MkAd.vue';
+import { isDebuggerEnabled, stackTraceInstances } from '@/debug';
import { i18n } from '@/i18n';
+import * as os from '@/os';
import { defaultStore } from '@/store';
import { MisskeyEntity } from '@/types/date-separated-list';
@@ -46,7 +48,7 @@ export default defineComponent({
if (props.items.length === 0) return;
- const renderChildren = () => props.items.map((item, i) => {
+ const renderChildrenImpl = () => props.items.map((item, i) => {
if (!slots || !slots.default) return;
const el = slots.default({
@@ -95,6 +97,21 @@ export default defineComponent({
}
});
+ const renderChildren = () => {
+ const children = renderChildrenImpl();
+ if (isDebuggerEnabled(6864)) {
+ const nodes = children.flatMap((node) => node ?? []);
+ const keys = new Set(nodes.map((node) => node.key));
+ if (keys.size !== nodes.length) {
+ const id = crypto.randomUUID();
+ const instances = stackTraceInstances();
+ os.toast(instances.reduce((a, c) => `${a} at ${c.type.name}`, `[DEBUG_6864 (${id})]: ${nodes.length - keys.size} duplicated keys found`));
+ console.warn({ id, debugId: 6864, stack: instances });
+ }
+ }
+ return children;
+ };
+
function onBeforeLeave(el: HTMLElement) {
el.style.top = `${el.offsetTop}px`;
el.style.left = `${el.offsetLeft}px`;