diff --git a/src/api/endpoints/posts/create.ts b/src/api/endpoints/posts/create.ts
index 075e1ac9f0..57f98fa811 100644
--- a/src/api/endpoints/posts/create.ts
+++ b/src/api/endpoints/posts/create.ts
@@ -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,
diff --git a/src/api/models/post.ts b/src/api/models/post.ts
index 0bbacebf66..edb69e0c15 100644
--- a/src/api/models/post.ts
+++ b/src/api/models/post.ts
@@ -31,6 +31,7 @@ export type IPost = {
app_id: mongo.ObjectID;
category: string;
is_category_verified: boolean;
+ via_mobile: boolean;
};
/**
diff --git a/src/const.json b/src/const.json
index d8fe4fe6cd..65dc734fab 100644
--- a/src/const.json
+++ b/src/const.json
@@ -1,5 +1,5 @@
{
"copyright": "Copyright (c) 2014-2018 syuilo",
- "themeColor": "#ff4e45",
+ "themeColor": "#5cbb2d",
"themeColorForeground": "#fff"
}
diff --git a/src/web/app/desktop/views/components/posts.post.vue b/src/web/app/desktop/views/components/posts.post.vue
index 4a95918c48..ce0a31d183 100644
--- a/src/web/app/desktop/views/components/posts.post.vue
+++ b/src/web/app/desktop/views/components/posts.post.vue
@@ -26,6 +26,7 @@
@{{ p.user.username }}
via {{ p.app.name }}
+
%fa:mobile-alt%
@@ -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
diff --git a/src/web/app/desktop/views/components/settings.vue b/src/web/app/desktop/views/components/settings.vue
index 182a9a1d5e..20d7a77715 100644
--- a/src/web/app/desktop/views/components/settings.vue
+++ b/src/web/app/desktop/views/components/settings.vue
@@ -26,6 +26,11 @@
+
+
言語
@@ -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 => {
diff --git a/src/web/app/mobile/views/components/post-form.vue b/src/web/app/mobile/views/components/post-form.vue
index 63b75b92f0..009012b0b6 100644
--- a/src/web/app/mobile/views/components/post-form.vue
+++ b/src/web/app/mobile/views/components/post-form.vue
@@ -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();
diff --git a/src/web/app/mobile/views/components/posts.post.vue b/src/web/app/mobile/views/components/posts.post.vue
index 3c02e1e990..d0a897db65 100644
--- a/src/web/app/mobile/views/components/posts.post.vue
+++ b/src/web/app/mobile/views/components/posts.post.vue
@@ -24,9 +24,12 @@
{{ p.user.name }}
bot
@{{ p.user.username }}
-
-
-
+
+ %fa:mobile-alt%
+
+
+
+
@@ -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
diff --git a/src/web/docs/api/entities/post.yaml b/src/web/docs/api/entities/post.yaml
index 551f3b7c3e..e4359ffd0c 100644
--- a/src/web/docs/api/entities/post.yaml
+++ b/src/web/docs/api/entities/post.yaml
@@ -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