mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-11-04 07:24:13 +00:00 
			
		
		
		
	factor out shared "compute-merged-cw" routine
This commit is contained in:
		
							parent
							
								
									e60fe879d6
								
							
						
					
					
						commit
						b2d43040b1
					
				
					 13 changed files with 41 additions and 96 deletions
				
			
		| 
						 | 
				
			
			@ -109,7 +109,7 @@ import * as mfm from '@transfem-org/sfm-js';
 | 
			
		|||
import * as Misskey from 'misskey-js';
 | 
			
		||||
import { shouldCollapsed } from '@@/js/collapsed.js';
 | 
			
		||||
import { url } from '@@/js/config.js';
 | 
			
		||||
import { appendContentWarning } from '@@/js/append-content-warning.js';
 | 
			
		||||
import { computeMergedCw } from '@@/js/compute-merged-cw.js';
 | 
			
		||||
import I18n from '@/components/I18n.vue';
 | 
			
		||||
import EmNoteSub from '@/components/EmNoteSub.vue';
 | 
			
		||||
import EmNoteHeader from '@/components/EmNoteHeader.vue';
 | 
			
		||||
| 
						 | 
				
			
			@ -156,13 +156,7 @@ const isLong = shouldCollapsed(appearNote.value, []);
 | 
			
		|||
const collapsed = ref(appearNote.value.cw == null && isLong);
 | 
			
		||||
const isDeleted = ref(false);
 | 
			
		||||
 | 
			
		||||
const mergedCW = computed(() => {
 | 
			
		||||
	let cw = appearNote.value.cw;
 | 
			
		||||
	if (appearNote.value.user.mandatoryCW) {
 | 
			
		||||
		cw = appendContentWarning(cw, appearNote.value.user.mandatoryCW);
 | 
			
		||||
	}
 | 
			
		||||
	return cw;
 | 
			
		||||
});
 | 
			
		||||
const mergedCW = computed(() => computeMergedCw(appearNote.value));
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" module>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -130,7 +130,7 @@ SPDX-License-Identifier: AGPL-3.0-only
 | 
			
		|||
import { computed, inject, ref } from 'vue';
 | 
			
		||||
import * as mfm from '@transfem-org/sfm-js';
 | 
			
		||||
import * as Misskey from 'misskey-js';
 | 
			
		||||
import { appendContentWarning } from '@@/js/append-content-warning.js';
 | 
			
		||||
import { computeMergedCw } from '@@/js/compute-merged-cw.js';
 | 
			
		||||
import I18n from '@/components/I18n.vue';
 | 
			
		||||
import EmMediaList from '@/components/EmMediaList.vue';
 | 
			
		||||
import EmNoteSub from '@/components/EmNoteSub.vue';
 | 
			
		||||
| 
						 | 
				
			
			@ -177,13 +177,7 @@ const parsed = appearNote.value.text ? mfm.parse(appearNote.value.text) : null;
 | 
			
		|||
const isLong = shouldCollapsed(appearNote.value, []);
 | 
			
		||||
const collapsed = ref(appearNote.value.cw == null && isLong);
 | 
			
		||||
 | 
			
		||||
const mergedCW = computed(() => {
 | 
			
		||||
	let cw = appearNote.value.cw;
 | 
			
		||||
	if (appearNote.value.user.mandatoryCW) {
 | 
			
		||||
		cw = appendContentWarning(cw, appearNote.value.user.mandatoryCW);
 | 
			
		||||
	}
 | 
			
		||||
	return cw;
 | 
			
		||||
});
 | 
			
		||||
const mergedCW = computed(() => computeMergedCw(appearNote.value));
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" module>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@ SPDX-License-Identifier: AGPL-3.0-only
 | 
			
		|||
<script lang="ts" setup>
 | 
			
		||||
import { computed, ref } from 'vue';
 | 
			
		||||
import * as Misskey from 'misskey-js';
 | 
			
		||||
import { appendContentWarning } from '@@/js/append-content-warning.js';
 | 
			
		||||
import { computeMergedCw } from '@@/js/compute-merged-cw.js';
 | 
			
		||||
import { i18n } from '@/i18n.js';
 | 
			
		||||
import EmAvatar from '@/components/EmAvatar.vue';
 | 
			
		||||
import EmNoteHeader from '@/components/EmNoteHeader.vue';
 | 
			
		||||
| 
						 | 
				
			
			@ -37,13 +37,7 @@ const props = defineProps<{
 | 
			
		|||
 | 
			
		||||
const showContent = ref(false);
 | 
			
		||||
 | 
			
		||||
const mergedCW = computed(() => {
 | 
			
		||||
	let cw = props.note.cw;
 | 
			
		||||
	if (props.note.user.mandatoryCW) {
 | 
			
		||||
		cw = appendContentWarning(cw, props.note.user.mandatoryCW);
 | 
			
		||||
	}
 | 
			
		||||
	return cw;
 | 
			
		||||
});
 | 
			
		||||
const mergedCW = computed(() => computeMergedCw(props.note));
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" module>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -33,7 +33,7 @@ SPDX-License-Identifier: AGPL-3.0-only
 | 
			
		|||
<script lang="ts" setup>
 | 
			
		||||
import { computed, ref } from 'vue';
 | 
			
		||||
import * as Misskey from 'misskey-js';
 | 
			
		||||
import { appendContentWarning } from '@@/js/append-content-warning.js';
 | 
			
		||||
import { computeMergedCw } from '@@/js/compute-merged-cw.js';
 | 
			
		||||
import EmA from '@/components/EmA.vue';
 | 
			
		||||
import EmAvatar from '@/components/EmAvatar.vue';
 | 
			
		||||
import EmNoteHeader from '@/components/EmNoteHeader.vue';
 | 
			
		||||
| 
						 | 
				
			
			@ -56,13 +56,7 @@ const props = withDefaults(defineProps<{
 | 
			
		|||
const showContent = ref(false);
 | 
			
		||||
const replies = ref<Misskey.entities.Note[]>([]);
 | 
			
		||||
 | 
			
		||||
const mergedCW = computed(() => {
 | 
			
		||||
	let cw = props.note.cw;
 | 
			
		||||
	if (props.note.user.mandatoryCW) {
 | 
			
		||||
		cw = appendContentWarning(cw, props.note.user.mandatoryCW);
 | 
			
		||||
	}
 | 
			
		||||
	return cw;
 | 
			
		||||
});
 | 
			
		||||
const mergedCW = computed(() => computeMergedCw(props.note));
 | 
			
		||||
 | 
			
		||||
if (props.detail) {
 | 
			
		||||
	misskeyApi('notes/children', {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										17
									
								
								packages/frontend-shared/js/compute-merged-cw.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								packages/frontend-shared/js/compute-merged-cw.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
/*
 | 
			
		||||
 * SPDX-FileCopyrightText: hazelnoot and other Sharkey contributors
 | 
			
		||||
 * SPDX-License-Identifier: AGPL-3.0-only
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
import * as Misskey from 'misskey-js';
 | 
			
		||||
import { appendContentWarning } from '@/js/append-content-warning.js';
 | 
			
		||||
 | 
			
		||||
export function computeMergedCw(note: Misskey.entities.Note): string | null {
 | 
			
		||||
	let cw = note.cw;
 | 
			
		||||
 | 
			
		||||
	if (note.user.mandatoryCW) {
 | 
			
		||||
		cw = appendContentWarning(cw, note.user.mandatoryCW);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return cw ?? null;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -212,7 +212,7 @@ import * as Misskey from 'misskey-js';
 | 
			
		|||
import { isLink } from '@@/js/is-link.js';
 | 
			
		||||
import { shouldCollapsed } from '@@/js/collapsed.js';
 | 
			
		||||
import { host } from '@@/js/config.js';
 | 
			
		||||
import { appendContentWarning } from '@@/js/append-content-warning.js';
 | 
			
		||||
import { computeMergedCw } from '@@/js/compute-merged-cw.js';
 | 
			
		||||
import type { MenuItem } from '@/types/menu.js';
 | 
			
		||||
import MkNoteSub from '@/components/MkNoteSub.vue';
 | 
			
		||||
import MkNoteHeader from '@/components/MkNoteHeader.vue';
 | 
			
		||||
| 
						 | 
				
			
			@ -351,13 +351,7 @@ const pleaseLoginContext = computed<OpenOnRemoteOptions>(() => ({
 | 
			
		|||
	url: `https://${host}/notes/${appearNote.value.id}`,
 | 
			
		||||
}));
 | 
			
		||||
 | 
			
		||||
const mergedCW = computed(() => {
 | 
			
		||||
	let cw = appearNote.value.cw;
 | 
			
		||||
	if (appearNote.value.user.mandatoryCW) {
 | 
			
		||||
		cw = appendContentWarning(cw, appearNote.value.user.mandatoryCW);
 | 
			
		||||
	}
 | 
			
		||||
	return cw;
 | 
			
		||||
});
 | 
			
		||||
const mergedCW = computed(() => computeMergedCw(appearNote.value));
 | 
			
		||||
 | 
			
		||||
const renoteTooltip = computeRenoteTooltip(renoted);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -245,7 +245,7 @@ import * as mfm from '@transfem-org/sfm-js';
 | 
			
		|||
import * as Misskey from 'misskey-js';
 | 
			
		||||
import { isLink } from '@@/js/is-link.js';
 | 
			
		||||
import { host } from '@@/js/config.js';
 | 
			
		||||
import { appendContentWarning } from '@@/js/append-content-warning.js';
 | 
			
		||||
import { computeMergedCw } from '@@/js/compute-merged-cw.js';
 | 
			
		||||
import MkNoteSub from '@/components/MkNoteSub.vue';
 | 
			
		||||
import MkNoteSimple from '@/components/MkNoteSimple.vue';
 | 
			
		||||
import MkReactionsViewer from '@/components/MkReactionsViewer.vue';
 | 
			
		||||
| 
						 | 
				
			
			@ -349,13 +349,7 @@ const quotes = ref<Misskey.entities.Note[]>([]);
 | 
			
		|||
const canRenote = computed(() => ['public', 'home'].includes(appearNote.value.visibility) || (appearNote.value.visibility === 'followers' && appearNote.value.userId === $i?.id));
 | 
			
		||||
const defaultLike = computed(() => defaultStore.state.like ? defaultStore.state.like : null);
 | 
			
		||||
 | 
			
		||||
const mergedCW = computed(() => {
 | 
			
		||||
	let cw = appearNote.value.cw;
 | 
			
		||||
	if (appearNote.value.user.mandatoryCW) {
 | 
			
		||||
		cw = appendContentWarning(cw, appearNote.value.user.mandatoryCW);
 | 
			
		||||
	}
 | 
			
		||||
	return cw;
 | 
			
		||||
});
 | 
			
		||||
const mergedCW = computed(() => computeMergedCw(appearNote.value));
 | 
			
		||||
 | 
			
		||||
const renoteTooltip = computeRenoteTooltip(renoted);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,7 +28,7 @@ SPDX-License-Identifier: AGPL-3.0-only
 | 
			
		|||
<script lang="ts" setup>
 | 
			
		||||
import { computed, ref, watch } from 'vue';
 | 
			
		||||
import * as Misskey from 'misskey-js';
 | 
			
		||||
import { appendContentWarning } from '@@/js/append-content-warning.js';
 | 
			
		||||
import { computeMergedCw } from '@@/js/compute-merged-cw.js';
 | 
			
		||||
import * as os from '@/os.js';
 | 
			
		||||
import MkNoteHeader from '@/components/MkNoteHeader.vue';
 | 
			
		||||
import MkSubNoteContent from '@/components/MkSubNoteContent.vue';
 | 
			
		||||
| 
						 | 
				
			
			@ -49,13 +49,7 @@ const props = defineProps<{
 | 
			
		|||
let showContent = ref(defaultStore.state.uncollapseCW);
 | 
			
		||||
const isDeleted = ref(false);
 | 
			
		||||
 | 
			
		||||
const mergedCW = computed(() => {
 | 
			
		||||
	let cw = props.note.cw;
 | 
			
		||||
	if (props.note.user.mandatoryCW) {
 | 
			
		||||
		cw = appendContentWarning(cw, props.note.user.mandatoryCW);
 | 
			
		||||
	}
 | 
			
		||||
	return cw;
 | 
			
		||||
});
 | 
			
		||||
const mergedCW = computed(() => computeMergedCw(props.note));
 | 
			
		||||
 | 
			
		||||
const emit = defineEmits<{
 | 
			
		||||
	(ev: 'editScheduleNote'): void;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -86,7 +86,7 @@ SPDX-License-Identifier: AGPL-3.0-only
 | 
			
		|||
<script lang="ts" setup>
 | 
			
		||||
import { computed, ref, shallowRef, watch } from 'vue';
 | 
			
		||||
import * as Misskey from 'misskey-js';
 | 
			
		||||
import { appendContentWarning } from '@@/js/append-content-warning.js';
 | 
			
		||||
import { computeMergedCw } from '@@/js/compute-merged-cw.js';
 | 
			
		||||
import MkNoteHeader from '@/components/MkNoteHeader.vue';
 | 
			
		||||
import MkReactionsViewer from '@/components/MkReactionsViewer.vue';
 | 
			
		||||
import MkSubNoteContent from '@/components/MkSubNoteContent.vue';
 | 
			
		||||
| 
						 | 
				
			
			@ -143,13 +143,7 @@ let appearNote = computed(() => isRenote ? props.note.renote as Misskey.entities
 | 
			
		|||
const defaultLike = computed(() => defaultStore.state.like ? defaultStore.state.like : null);
 | 
			
		||||
const replies = ref<Misskey.entities.Note[]>([]);
 | 
			
		||||
 | 
			
		||||
const mergedCW = computed(() => {
 | 
			
		||||
	let cw = appearNote.value.cw;
 | 
			
		||||
	if (appearNote.value.user.mandatoryCW) {
 | 
			
		||||
		cw = appendContentWarning(cw, appearNote.value.user.mandatoryCW);
 | 
			
		||||
	}
 | 
			
		||||
	return cw;
 | 
			
		||||
});
 | 
			
		||||
const mergedCW = computed(() => computeMergedCw(appearNote.value));
 | 
			
		||||
 | 
			
		||||
const isRenote = (
 | 
			
		||||
	props.note.renote != null &&
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -213,7 +213,7 @@ import * as Misskey from 'misskey-js';
 | 
			
		|||
import { isLink } from '@@/js/is-link.js';
 | 
			
		||||
import { shouldCollapsed } from '@@/js/collapsed.js';
 | 
			
		||||
import { host } from '@@/js/config.js';
 | 
			
		||||
import { appendContentWarning } from '@@/js/append-content-warning.js';
 | 
			
		||||
import { computeMergedCw } from '@@/js/compute-merged-cw.js';
 | 
			
		||||
import type { MenuItem } from '@/types/menu.js';
 | 
			
		||||
import SkNoteSub from '@/components/SkNoteSub.vue';
 | 
			
		||||
import SkNoteHeader from '@/components/SkNoteHeader.vue';
 | 
			
		||||
| 
						 | 
				
			
			@ -346,13 +346,7 @@ const defaultLike = computed(() => defaultStore.state.like ? defaultStore.state.
 | 
			
		|||
const animated = computed(() => parsed.value ? checkAnimationFromMfm(parsed.value) : null);
 | 
			
		||||
const allowAnim = ref(defaultStore.state.advancedMfm && defaultStore.state.animatedMfm ? true : false);
 | 
			
		||||
 | 
			
		||||
const mergedCW = computed(() => {
 | 
			
		||||
	let cw = appearNote.value.cw;
 | 
			
		||||
	if (appearNote.value.user.mandatoryCW) {
 | 
			
		||||
		cw = appendContentWarning(cw, appearNote.value.user.mandatoryCW);
 | 
			
		||||
	}
 | 
			
		||||
	return cw;
 | 
			
		||||
});
 | 
			
		||||
const mergedCW = computed(() => computeMergedCw(appearNote.value));
 | 
			
		||||
 | 
			
		||||
const renoteTooltip = computeRenoteTooltip(renoted);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -250,7 +250,7 @@ import * as mfm from '@transfem-org/sfm-js';
 | 
			
		|||
import * as Misskey from 'misskey-js';
 | 
			
		||||
import { isLink } from '@@/js/is-link.js';
 | 
			
		||||
import { host } from '@@/js/config.js';
 | 
			
		||||
import { appendContentWarning } from '@@/js/append-content-warning.js';
 | 
			
		||||
import { computeMergedCw } from '@@/js/compute-merged-cw.js';
 | 
			
		||||
import SkNoteSub from '@/components/SkNoteSub.vue';
 | 
			
		||||
import SkNoteSimple from '@/components/SkNoteSimple.vue';
 | 
			
		||||
import MkReactionsViewer from '@/components/MkReactionsViewer.vue';
 | 
			
		||||
| 
						 | 
				
			
			@ -355,13 +355,7 @@ const quotes = ref<Misskey.entities.Note[]>([]);
 | 
			
		|||
const canRenote = computed(() => ['public', 'home'].includes(appearNote.value.visibility) || (appearNote.value.visibility === 'followers' && appearNote.value.userId === $i?.id));
 | 
			
		||||
const defaultLike = computed(() => defaultStore.state.like ? defaultStore.state.like : null);
 | 
			
		||||
 | 
			
		||||
const mergedCW = computed(() => {
 | 
			
		||||
	let cw = appearNote.value.cw;
 | 
			
		||||
	if (appearNote.value.user.mandatoryCW) {
 | 
			
		||||
		cw = appendContentWarning(cw, appearNote.value.user.mandatoryCW);
 | 
			
		||||
	}
 | 
			
		||||
	return cw;
 | 
			
		||||
});
 | 
			
		||||
const mergedCW = computed(() => computeMergedCw(appearNote.value));
 | 
			
		||||
 | 
			
		||||
const renoteTooltip = computeRenoteTooltip(renoted);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@ SPDX-License-Identifier: AGPL-3.0-only
 | 
			
		|||
<script lang="ts" setup>
 | 
			
		||||
import { watch, ref, computed } from 'vue';
 | 
			
		||||
import * as Misskey from 'misskey-js';
 | 
			
		||||
import { appendContentWarning } from '@@/js/append-content-warning.js';
 | 
			
		||||
import { computeMergedCw } from '@@/js/compute-merged-cw.js';
 | 
			
		||||
import MkNoteHeader from '@/components/MkNoteHeader.vue';
 | 
			
		||||
import MkSubNoteContent from '@/components/MkSubNoteContent.vue';
 | 
			
		||||
import MkCwButton from '@/components/MkCwButton.vue';
 | 
			
		||||
| 
						 | 
				
			
			@ -38,13 +38,7 @@ const props = defineProps<{
 | 
			
		|||
 | 
			
		||||
let showContent = ref(defaultStore.state.uncollapseCW);
 | 
			
		||||
 | 
			
		||||
const mergedCW = computed(() => {
 | 
			
		||||
	let cw = props.note.cw;
 | 
			
		||||
	if (props.note.user.mandatoryCW) {
 | 
			
		||||
		cw = appendContentWarning(cw, props.note.user.mandatoryCW);
 | 
			
		||||
	}
 | 
			
		||||
	return cw;
 | 
			
		||||
});
 | 
			
		||||
const mergedCW = computed(() => computeMergedCw(props.note));
 | 
			
		||||
 | 
			
		||||
watch(() => props.expandAllCws, (expandAllCws) => {
 | 
			
		||||
	if (expandAllCws !== showContent.value) showContent.value = expandAllCws;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -94,7 +94,7 @@ SPDX-License-Identifier: AGPL-3.0-only
 | 
			
		|||
<script lang="ts" setup>
 | 
			
		||||
import { computed, ref, shallowRef, watch } from 'vue';
 | 
			
		||||
import * as Misskey from 'misskey-js';
 | 
			
		||||
import { appendContentWarning } from '@@/js/append-content-warning.js';
 | 
			
		||||
import { computeMergedCw } from '@@/js/compute-merged-cw.js';
 | 
			
		||||
import SkNoteHeader from '@/components/SkNoteHeader.vue';
 | 
			
		||||
import MkReactionsViewer from '@/components/MkReactionsViewer.vue';
 | 
			
		||||
import MkSubNoteContent from '@/components/MkSubNoteContent.vue';
 | 
			
		||||
| 
						 | 
				
			
			@ -157,13 +157,7 @@ let appearNote = computed(() => isRenote ? props.note.renote as Misskey.entities
 | 
			
		|||
const defaultLike = computed(() => defaultStore.state.like ? defaultStore.state.like : null);
 | 
			
		||||
const replies = ref<Misskey.entities.Note[]>([]);
 | 
			
		||||
 | 
			
		||||
const mergedCW = computed(() => {
 | 
			
		||||
	let cw = appearNote.value.cw;
 | 
			
		||||
	if (appearNote.value.user.mandatoryCW) {
 | 
			
		||||
		cw = appendContentWarning(cw, appearNote.value.user.mandatoryCW);
 | 
			
		||||
	}
 | 
			
		||||
	return cw;
 | 
			
		||||
});
 | 
			
		||||
const mergedCW = computed(() => computeMergedCw(appearNote.value));
 | 
			
		||||
 | 
			
		||||
const isRenote = (
 | 
			
		||||
	props.note.renote != null &&
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue