This commit is contained in:
		
							parent
							
								
									71b4a73798
								
							
						
					
					
						commit
						d7c94de07e
					
				|  | @ -31,6 +31,10 @@ module.exports = (params, user: IUser, app) => new Promise(async (res, rej) => { | |||
| 	const [text, textErr] = $(params.text).optional.string().pipe(isValidText).$; | ||||
| 	if (textErr) return rej('invalid text'); | ||||
| 
 | ||||
| 	// Get 'via_mobile' parameter
 | ||||
| 	const [viaMobile = false, viaMobileErr] = $(params.via_mobile).optional.boolean().$; | ||||
| 	if (viaMobileErr) return rej('invalid via_mobile'); | ||||
| 
 | ||||
| 	// Get 'tags' parameter
 | ||||
| 	const [tags = [], tagsErr] = $(params.tags).optional.array('string').unique().eachQ(t => t.range(1, 32)).$; | ||||
| 	if (tagsErr) return rej('invalid tags'); | ||||
|  | @ -239,6 +243,7 @@ module.exports = (params, user: IUser, app) => new Promise(async (res, rej) => { | |||
| 		tags: tags, | ||||
| 		user_id: user._id, | ||||
| 		app_id: app ? app._id : null, | ||||
| 		via_mobile: viaMobile, | ||||
| 
 | ||||
| 		// 以下非正規化データ
 | ||||
| 		_reply: reply ? { user_id: reply.user_id } : undefined, | ||||
|  |  | |||
|  | @ -31,6 +31,7 @@ export type IPost = { | |||
| 	app_id: mongo.ObjectID; | ||||
| 	category: string; | ||||
| 	is_category_verified: boolean; | ||||
| 	via_mobile: boolean; | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| { | ||||
| 	"copyright": "Copyright (c) 2014-2018 syuilo", | ||||
| 	"themeColor": "#ff4e45", | ||||
| 	"themeColor": "#5cbb2d", | ||||
| 	"themeColorForeground": "#fff" | ||||
| } | ||||
|  |  | |||
|  | @ -26,6 +26,7 @@ | |||
| 				<span class="username">@{{ p.user.username }}</span> | ||||
| 				<div class="info"> | ||||
| 					<span class="app" v-if="p.app">via <b>{{ p.app.name }}</b></span> | ||||
| 					<span class="mobile" v-if="p.via_mobile">%fa:mobile-alt%</span> | ||||
| 					<router-link class="created-at" :to="url"> | ||||
| 						<mk-time :time="p.created_at"/> | ||||
| 					</router-link> | ||||
|  | @ -399,6 +400,10 @@ export default Vue.extend({ | |||
| 					margin-left auto | ||||
| 					font-size 0.9em | ||||
| 
 | ||||
| 					> .mobile | ||||
| 						margin-right 8px | ||||
| 						color #ccc | ||||
| 
 | ||||
| 					> .app | ||||
| 						margin-right 8px | ||||
| 						padding-right 8px | ||||
|  |  | |||
|  | @ -26,6 +26,11 @@ | |||
| 			<mk-switch v-model="os.i.client_settings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="タイムライン上部に投稿フォームを表示する"/> | ||||
| 		</section> | ||||
| 
 | ||||
| 		<section class="web" v-show="page == 'web'"> | ||||
| 			<h1>モバイル</h1> | ||||
| 			<mk-switch v-model="os.i.client_settings.disableViaMobile" @change="onChangeDisableViaMobile" text="モバイルからの投稿とフラグを付けない"/> | ||||
| 		</section> | ||||
| 
 | ||||
| 		<section class="web" v-show="page == 'web'"> | ||||
| 			<h1>言語</h1> | ||||
| 			<el-select v-model="lang" placeholder="言語を選択"> | ||||
|  | @ -192,6 +197,12 @@ export default Vue.extend({ | |||
| 				value: v | ||||
| 			}); | ||||
| 		}, | ||||
| 		onChangeDisableViaMobile(v) { | ||||
| 			(this as any).api('i/update_client_setting', { | ||||
| 				name: 'disableViaMobile', | ||||
| 				value: v | ||||
| 			}); | ||||
| 		}, | ||||
| 		checkForUpdate() { | ||||
| 			this.checkingForUpdate = true; | ||||
| 			checkForUpdate((this as any).os, true, true).then(newer => { | ||||
|  |  | |||
|  | @ -91,11 +91,13 @@ export default Vue.extend({ | |||
| 		}, | ||||
| 		post() { | ||||
| 			this.posting = true; | ||||
| 			const viaMobile = (this as any).os.i.client_settings.disableViaMobile !== true; | ||||
| 			(this as any).api('posts/create', { | ||||
| 				text: this.text == '' ? undefined : this.text, | ||||
| 				media_ids: this.files.length > 0 ? this.files.map(f => f.id) : undefined, | ||||
| 				reply_id: this.reply ? this.reply.id : undefined, | ||||
| 				poll: this.poll ? (this.$refs.poll as any).get() : undefined | ||||
| 				poll: this.poll ? (this.$refs.poll as any).get() : undefined, | ||||
| 				via_mobile: viaMobile | ||||
| 			}).then(data => { | ||||
| 				this.$emit('post'); | ||||
| 				this.$destroy(); | ||||
|  |  | |||
|  | @ -24,9 +24,12 @@ | |||
| 				<router-link class="name" :to="`/${p.user.username}`">{{ p.user.name }}</router-link> | ||||
| 				<span class="is-bot" v-if="p.user.is_bot">bot</span> | ||||
| 				<span class="username">@{{ p.user.username }}</span> | ||||
| 				<router-link class="created-at" :to="url"> | ||||
| 					<mk-time :time="p.created_at"/> | ||||
| 				</router-link> | ||||
| 				<div class="info"> | ||||
| 					<span class="mobile" v-if="p.via_mobile">%fa:mobile-alt%</span> | ||||
| 					<router-link class="created-at" :to="url"> | ||||
| 						<mk-time :time="p.created_at"/> | ||||
| 					</router-link> | ||||
| 				</div> | ||||
| 			</header> | ||||
| 			<div class="body"> | ||||
| 				<div class="text" ref="text"> | ||||
|  | @ -336,10 +339,16 @@ export default Vue.extend({ | |||
| 					margin 0 0.5em 0 0 | ||||
| 					color #ccc | ||||
| 
 | ||||
| 				> .created-at | ||||
| 				> .info | ||||
| 					margin-left auto | ||||
| 					font-size 0.9em | ||||
| 					color #c0c0c0 | ||||
| 
 | ||||
| 					> .mobile | ||||
| 						margin-right 6px | ||||
| 						color #c0c0c0 | ||||
| 
 | ||||
| 					> .created-at | ||||
| 						color #c0c0c0 | ||||
| 
 | ||||
| 			> .body | ||||
| 
 | ||||
|  |  | |||
|  | @ -17,6 +17,12 @@ props: | |||
|     desc: | ||||
|       ja: "投稿日時" | ||||
|       en: "The posted date of this post" | ||||
|   - name: "via_mobile" | ||||
|     type: "boolean" | ||||
|     optional: true | ||||
|     desc: | ||||
|       ja: "モバイル端末から投稿したか否か(自己申告であることに留意)" | ||||
|       en: "Whether this post sent via a mobile device" | ||||
|   - name: "text" | ||||
|     type: "string" | ||||
|     optional: true | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue