添付されたメディアのURLは省略して表示するように
This commit is contained in:
		
							parent
							
								
									e1672e539b
								
							
						
					
					
						commit
						89a58dc596
					
				
					 4 changed files with 47 additions and 3 deletions
				
			
		
							
								
								
									
										16
									
								
								src/client/app/common/scripts/can-hide-text.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/client/app/common/scripts/can-hide-text.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
export default function(note) {
 | 
			
		||||
	if (note.text == null) return true;
 | 
			
		||||
 | 
			
		||||
	let txt = note.text;
 | 
			
		||||
 | 
			
		||||
	if (note.media) {
 | 
			
		||||
		note.media.forEach(file => {
 | 
			
		||||
			txt = txt.replace(file.url, '');
 | 
			
		||||
			if (file.src) txt = txt.replace(file.src, '');
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		if (txt == '') return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return false;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +44,7 @@
 | 
			
		|||
					<div class="text">
 | 
			
		||||
						<span v-if="p.isHidden" style="opacity: 0.5">(この投稿は非公開です)</span>
 | 
			
		||||
						<a class="reply" v-if="p.reply">%fa:reply%</a>
 | 
			
		||||
						<mk-note-html v-if="p.text" :text="p.text" :i="os.i" :class="$style.text"/>
 | 
			
		||||
						<mk-note-html v-if="p.text && !canHideText(p)" :text="p.text" :i="os.i" :class="$style.text"/>
 | 
			
		||||
						<a class="rp" v-if="p.renote">RP:</a>
 | 
			
		||||
					</div>
 | 
			
		||||
					<div class="media" v-if="p.media.length > 0">
 | 
			
		||||
| 
						 | 
				
			
			@ -94,6 +94,7 @@
 | 
			
		|||
<script lang="ts">
 | 
			
		||||
import Vue from 'vue';
 | 
			
		||||
import dateStringify from '../../../common/scripts/date-stringify';
 | 
			
		||||
import canHideText from '../../../common/scripts/can-hide-text';
 | 
			
		||||
import parse from '../../../../../text/parse';
 | 
			
		||||
 | 
			
		||||
import MkPostFormWindow from './post-form-window.vue';
 | 
			
		||||
| 
						 | 
				
			
			@ -130,16 +131,17 @@ export default Vue.extend({
 | 
			
		|||
	},
 | 
			
		||||
 | 
			
		||||
	computed: {
 | 
			
		||||
 | 
			
		||||
		isRenote(): boolean {
 | 
			
		||||
			return (this.note.renote &&
 | 
			
		||||
				this.note.text == null &&
 | 
			
		||||
				this.note.mediaIds.length == 0 &&
 | 
			
		||||
				this.note.poll == null);
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		p(): any {
 | 
			
		||||
			return this.isRenote ? this.note.renote : this.note;
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		reactionsCount(): number {
 | 
			
		||||
			return this.p.reactionCounts
 | 
			
		||||
				? Object.keys(this.p.reactionCounts)
 | 
			
		||||
| 
						 | 
				
			
			@ -147,9 +149,11 @@ export default Vue.extend({
 | 
			
		|||
					.reduce((a, b) => a + b)
 | 
			
		||||
				: 0;
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		title(): string {
 | 
			
		||||
			return dateStringify(this.p.createdAt);
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		urls(): string[] {
 | 
			
		||||
			if (this.p.text) {
 | 
			
		||||
				const ast = parse(this.p.text);
 | 
			
		||||
| 
						 | 
				
			
			@ -205,6 +209,8 @@ export default Vue.extend({
 | 
			
		|||
	},
 | 
			
		||||
 | 
			
		||||
	methods: {
 | 
			
		||||
		canHideText,
 | 
			
		||||
 | 
			
		||||
		capture(withHandler = false) {
 | 
			
		||||
			if ((this as any).os.isSignedIn) {
 | 
			
		||||
				this.connection.send({
 | 
			
		||||
| 
						 | 
				
			
			@ -214,6 +220,7 @@ export default Vue.extend({
 | 
			
		|||
				if (withHandler) this.connection.on('note-updated', this.onStreamNoteUpdated);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		decapture(withHandler = false) {
 | 
			
		||||
			if ((this as any).os.isSignedIn) {
 | 
			
		||||
				this.connection.send({
 | 
			
		||||
| 
						 | 
				
			
			@ -223,9 +230,11 @@ export default Vue.extend({
 | 
			
		|||
				if (withHandler) this.connection.off('note-updated', this.onStreamNoteUpdated);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		onStreamConnected() {
 | 
			
		||||
			this.capture();
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		onStreamNoteUpdated(data) {
 | 
			
		||||
			const note = data.note;
 | 
			
		||||
			if (note.id == this.note.id) {
 | 
			
		||||
| 
						 | 
				
			
			@ -234,28 +243,33 @@ export default Vue.extend({
 | 
			
		|||
				this.note.renote = note;
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		reply() {
 | 
			
		||||
			(this as any).os.new(MkPostFormWindow, {
 | 
			
		||||
				reply: this.p
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		renote() {
 | 
			
		||||
			(this as any).os.new(MkRenoteFormWindow, {
 | 
			
		||||
				note: this.p
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		react() {
 | 
			
		||||
			(this as any).os.new(MkReactionPicker, {
 | 
			
		||||
				source: this.$refs.reactButton,
 | 
			
		||||
				note: this.p
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		menu() {
 | 
			
		||||
			(this as any).os.new(MkNoteMenu, {
 | 
			
		||||
				source: this.$refs.menuButton,
 | 
			
		||||
				note: this.p
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		onKeydown(e) {
 | 
			
		||||
			let shouldBeCancel = true;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,7 +41,7 @@
 | 
			
		|||
					<div class="text">
 | 
			
		||||
						<span v-if="p.isHidden" style="opacity: 0.5">(この投稿は非公開です)</span>
 | 
			
		||||
						<a class="reply" v-if="p.reply">%fa:reply%</a>
 | 
			
		||||
						<mk-note-html v-if="p.text" :text="p.text" :i="os.i" :class="$style.text"/>
 | 
			
		||||
						<mk-note-html v-if="p.text && !canHideText(p)" :text="p.text" :i="os.i" :class="$style.text"/>
 | 
			
		||||
						<a class="rp" v-if="p.renote != null">RP:</a>
 | 
			
		||||
					</div>
 | 
			
		||||
					<div class="media" v-if="p.media.length > 0">
 | 
			
		||||
| 
						 | 
				
			
			@ -85,6 +85,7 @@
 | 
			
		|||
<script lang="ts">
 | 
			
		||||
import Vue from 'vue';
 | 
			
		||||
import parse from '../../../../../text/parse';
 | 
			
		||||
import canHideText from '../../../common/scripts/can-hide-text';
 | 
			
		||||
 | 
			
		||||
import MkNoteMenu from '../../../common/views/components/note-menu.vue';
 | 
			
		||||
import MkReactionPicker from '../../../common/views/components/reaction-picker.vue';
 | 
			
		||||
| 
						 | 
				
			
			@ -112,9 +113,11 @@ export default Vue.extend({
 | 
			
		|||
				this.note.mediaIds.length == 0 &&
 | 
			
		||||
				this.note.poll == null);
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		p(): any {
 | 
			
		||||
			return this.isRenote ? this.note.renote : this.note;
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		reactionsCount(): number {
 | 
			
		||||
			return this.p.reactionCounts
 | 
			
		||||
				? Object.keys(this.p.reactionCounts)
 | 
			
		||||
| 
						 | 
				
			
			@ -122,6 +125,7 @@ export default Vue.extend({
 | 
			
		|||
					.reduce((a, b) => a + b)
 | 
			
		||||
				: 0;
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		urls(): string[] {
 | 
			
		||||
			if (this.p.text) {
 | 
			
		||||
				const ast = parse(this.p.text);
 | 
			
		||||
| 
						 | 
				
			
			@ -177,6 +181,8 @@ export default Vue.extend({
 | 
			
		|||
	},
 | 
			
		||||
 | 
			
		||||
	methods: {
 | 
			
		||||
		canHideText,
 | 
			
		||||
 | 
			
		||||
		capture(withHandler = false) {
 | 
			
		||||
			if ((this as any).os.isSignedIn) {
 | 
			
		||||
				this.connection.send({
 | 
			
		||||
| 
						 | 
				
			
			@ -186,6 +192,7 @@ export default Vue.extend({
 | 
			
		|||
				if (withHandler) this.connection.on('note-updated', this.onStreamNoteUpdated);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		decapture(withHandler = false) {
 | 
			
		||||
			if ((this as any).os.isSignedIn) {
 | 
			
		||||
				this.connection.send({
 | 
			
		||||
| 
						 | 
				
			
			@ -195,9 +202,11 @@ export default Vue.extend({
 | 
			
		|||
				if (withHandler) this.connection.off('note-updated', this.onStreamNoteUpdated);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		onStreamConnected() {
 | 
			
		||||
			this.capture();
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		onStreamNoteUpdated(data) {
 | 
			
		||||
			const note = data.note;
 | 
			
		||||
			if (note.id == this.note.id) {
 | 
			
		||||
| 
						 | 
				
			
			@ -206,16 +215,19 @@ export default Vue.extend({
 | 
			
		|||
				this.note.renote = note;
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		reply() {
 | 
			
		||||
			(this as any).apis.post({
 | 
			
		||||
				reply: this.p
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		renote() {
 | 
			
		||||
			(this as any).apis.post({
 | 
			
		||||
				renote: this.p
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		react() {
 | 
			
		||||
			(this as any).os.new(MkReactionPicker, {
 | 
			
		||||
				source: this.$refs.reactButton,
 | 
			
		||||
| 
						 | 
				
			
			@ -223,6 +235,7 @@ export default Vue.extend({
 | 
			
		|||
				compact: true
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		menu() {
 | 
			
		||||
			(this as any).os.new(MkNoteMenu, {
 | 
			
		||||
				source: this.$refs.menuButton,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -154,6 +154,7 @@ export const pack = (
 | 
			
		|||
 | 
			
		||||
	_target = Object.assign(_target, _file.metadata);
 | 
			
		||||
 | 
			
		||||
	_target.src = _file.metadata.url;
 | 
			
		||||
	_target.url = `${config.drive_url}/${_target.id}/${encodeURIComponent(_target.name)}`;
 | 
			
		||||
 | 
			
		||||
	if (_target.properties == null) _target.properties = {};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue