diff options
| author | Acid Chicken (硫酸鶏) <root@acid-chicken.com> | 2023-03-09 14:35:38 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-09 14:35:38 +0900 |
| commit | 93ea9c20337a652defbd90fe41932a43d252baa3 (patch) | |
| tree | eecb594593285d9f75ce30f5eeb907a0218a7135 /packages/frontend/src/components | |
| parent | enhance: アカウント削除時のクライアントの挙動をいい感... (diff) | |
| download | sharkey-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.vue | 19 |
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`; |