summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/web/views/flash.tsx
diff options
context:
space:
mode:
authorかっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>2025-12-01 18:36:55 +0900
committerGitHub <noreply@github.com>2025-12-01 18:36:55 +0900
commitf222d7e24d3d134a078868c89363cacde906ccdc (patch)
tree987edf63823a078365a514b0c755258b196a5d1b /packages/backend/src/server/web/views/flash.tsx
parentfix(frontend): visibilityStateがhiddenな状態でstartViewTransitionしな... (diff)
downloadmisskey-f222d7e24d3d134a078868c89363cacde906ccdc.tar.gz
misskey-f222d7e24d3d134a078868c89363cacde906ccdc.tar.bz2
misskey-f222d7e24d3d134a078868c89363cacde906ccdc.zip
enhance(backend): pugをやめ、JSXベースのテンプレートに変更 (#16908)
* enhance(backend): pugをやめ、JSXベースのテンプレートに変更 (to misskey-dev dev branch) (#16889) * wip * wip * wip * wip * fix lint * attempt to fix test * fix * fix * fix: oauthページの描画がおかしい問題を修正 * typo [ci skip] * fix * fix * fix * fix * fix * refactor * fix * fix * fix broken lockfile * fix: expose supported languages as global variable * remove i18n package from root as it is no longer required [ci skip] * fix * fix: add i18n package.json to Docker target-builder stage for federation tests (#16909) * Initial plan * fix: add i18n package.json to Docker target-builder stage for federation tests Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> * fix: followup-test-federation for enh-remove-pug (#16910) * fix: followup-test-federation for enh-remove-pug * Revert "fix: add i18n package.json to Docker target-builder stage for federation tests (#16909)" This reverts commit 14313468d34f49c363eef4d0a932e9fc0d9a37fb. * fix: CSSが読み込まれない場合がある問題を修正 * fix [ci skip] * fix: propsのデフォルト値をnull合体演算子から論理和演算子に変更(空文字に対処するため) * remove @types/pug * enhance: bootloaderを埋め込むように * fix possible race condition * remove esbuild --------- Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> Co-authored-by: おさむのひと <46447427+samunohito@users.noreply.github.com>
Diffstat (limited to 'packages/backend/src/server/web/views/flash.tsx')
-rw-r--r--packages/backend/src/server/web/views/flash.tsx59
1 files changed, 59 insertions, 0 deletions
diff --git a/packages/backend/src/server/web/views/flash.tsx b/packages/backend/src/server/web/views/flash.tsx
new file mode 100644
index 0000000000..25a6b2c0ae
--- /dev/null
+++ b/packages/backend/src/server/web/views/flash.tsx
@@ -0,0 +1,59 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import type { Packed } from '@/misc/json-schema.js';
+import type { MiUserProfile } from '@/models/UserProfile.js';
+import type { CommonProps } from '@/server/web/views/_.js';
+import { Layout } from '@/server/web/views/base.js';
+
+export function FlashPage(props: CommonProps<{
+ flash: Packed<'Flash'>;
+ profile: MiUserProfile;
+}>) {
+ function ogBlock() {
+ return (
+ <>
+ <meta property="og:type" content="article" />
+ <meta property="og:title" content={props.flash.title} />
+ <meta property="og:description" content={props.flash.summary} />
+ <meta property="og:url" content={`${props.config.url}/play/${props.flash.id}`} />
+ {props.flash.user.avatarUrl ? (
+ <>
+ <meta property="og:image" content={props.flash.user.avatarUrl} />
+ <meta property="twitter:card" content="summary" />
+ </>
+ ) : null}
+ </>
+ );
+ }
+
+ function metaBlock() {
+ return (
+ <>
+ {props.profile.noCrawle ? <meta name="robots" content="noindex" /> : null}
+ {props.profile.preventAiLearning ? (
+ <>
+ <meta name="robots" content="noimageai" />
+ <meta name="robots" content="noai" />
+ </>
+ ) : null}
+ <meta name="misskey:user-username" content={props.flash.user.username} />
+ <meta name="misskey:user-id" content={props.flash.user.id} />
+ <meta name="misskey:flash-id" content={props.flash.id} />
+ </>
+ );
+ }
+
+ return (
+ <Layout
+ {...props}
+ title={`${props.flash.title} | ${props.instanceName}`}
+ desc={props.flash.summary}
+ metaSlot={metaBlock()}
+ ogSlot={ogBlock()}
+ >
+ </Layout>
+ );
+}