summaryrefslogtreecommitdiff
path: root/src/client/app
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-04-08 03:58:11 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-04-08 03:58:11 +0900
commita02ee3a08bac55c9f0b29cb6bc0a15726b7cc3c8 (patch)
treebf3c3dacd69737bf79eea0311fed1ddc504b15a5 /src/client/app
parentPost --> Note (diff)
downloadsharkey-a02ee3a08bac55c9f0b29cb6bc0a15726b7cc3c8.tar.gz
sharkey-a02ee3a08bac55c9f0b29cb6bc0a15726b7cc3c8.tar.bz2
sharkey-a02ee3a08bac55c9f0b29cb6bc0a15726b7cc3c8.zip
Some bug fixes
Diffstat (limited to 'src/client/app')
-rw-r--r--src/client/app/common/define-widget.ts4
-rw-r--r--src/client/app/common/mios.ts10
-rw-r--r--src/client/app/common/scripts/streaming/drive.ts2
-rw-r--r--src/client/app/common/scripts/streaming/home.ts4
-rw-r--r--src/client/app/common/scripts/streaming/messaging-index.ts2
-rw-r--r--src/client/app/common/scripts/streaming/messaging.ts4
-rw-r--r--src/client/app/common/scripts/streaming/othello-game.ts2
-rw-r--r--src/client/app/common/scripts/streaming/othello.ts2
-rw-r--r--src/client/app/common/views/components/signin.vue4
-rw-r--r--src/client/app/common/views/components/twitter-setting.vue12
-rw-r--r--src/client/app/common/views/components/uploader.vue2
-rw-r--r--src/client/app/desktop/api/update-avatar.ts2
-rw-r--r--src/client/app/desktop/api/update-banner.ts2
-rw-r--r--src/client/app/desktop/views/components/home.vue25
-rw-r--r--src/client/app/desktop/views/components/note-detail.vue4
-rw-r--r--src/client/app/desktop/views/components/notes.note.vue27
-rw-r--r--src/client/app/desktop/views/components/post-detail.vue4
-rw-r--r--src/client/app/desktop/views/components/posts.post.vue6
-rw-r--r--src/client/app/desktop/views/components/settings.2fa.vue8
-rw-r--r--src/client/app/desktop/views/components/settings.api.vue2
-rw-r--r--src/client/app/desktop/views/components/settings.profile.vue8
-rw-r--r--src/client/app/desktop/views/components/settings.vue12
-rw-r--r--src/client/app/desktop/views/components/timeline.vue2
-rw-r--r--src/client/app/desktop/views/components/ui.header.vue8
-rw-r--r--src/client/app/desktop/views/components/widget-container.vue4
-rw-r--r--src/client/app/desktop/views/components/window.vue4
-rw-r--r--src/client/app/desktop/views/pages/user/user.header.vue2
-rw-r--r--src/client/app/desktop/views/pages/user/user.home.vue2
-rw-r--r--src/client/app/desktop/views/pages/user/user.profile.vue10
-rw-r--r--src/client/app/mobile/views/components/note-detail.vue4
-rw-r--r--src/client/app/mobile/views/components/note.vue32
-rw-r--r--src/client/app/mobile/views/components/post-detail.vue462
-rw-r--r--src/client/app/mobile/views/components/post-form.vue2
-rw-r--r--src/client/app/mobile/views/components/post.vue540
-rw-r--r--src/client/app/mobile/views/components/ui.header.vue4
-rw-r--r--src/client/app/mobile/views/pages/home.vue20
-rw-r--r--src/client/app/mobile/views/pages/profile-setting.vue4
-rw-r--r--src/client/app/mobile/views/pages/user.vue10
-rw-r--r--src/client/app/mobile/views/pages/user/home.vue2
-rw-r--r--src/client/app/mobile/views/pages/welcome.vue4
40 files changed, 126 insertions, 1138 deletions
diff --git a/src/client/app/common/define-widget.ts b/src/client/app/common/define-widget.ts
index 9f8dcfc7ea..7b98c0903f 100644
--- a/src/client/app/common/define-widget.ts
+++ b/src/client/app/common/define-widget.ts
@@ -56,14 +56,14 @@ export default function<T extends object>(data: {
id: this.id,
data: newProps
}).then(() => {
- (this as any).os.i.account.clientSettings.mobileHome.find(w => w.id == this.id).data = newProps;
+ (this as any).os.i.clientSettings.mobileHome.find(w => w.id == this.id).data = newProps;
});
} else {
(this as any).api('i/update_home', {
id: this.id,
data: newProps
}).then(() => {
- (this as any).os.i.account.clientSettings.home.find(w => w.id == this.id).data = newProps;
+ (this as any).os.i.clientSettings.home.find(w => w.id == this.id).data = newProps;
});
}
}, {
diff --git a/src/client/app/common/mios.ts b/src/client/app/common/mios.ts
index 48e830810c..fd267bc3f8 100644
--- a/src/client/app/common/mios.ts
+++ b/src/client/app/common/mios.ts
@@ -270,7 +270,7 @@ export default class MiOS extends EventEmitter {
// Parse response
res.json().then(i => {
me = i;
- me.account.token = token;
+ me.token = token;
done();
});
})
@@ -294,12 +294,12 @@ export default class MiOS extends EventEmitter {
const fetched = me => {
if (me) {
// デフォルトの設定をマージ
- me.account.clientSettings = Object.assign({
+ me.clientSettings = Object.assign({
fetchOnScroll: true,
showMaps: true,
showPostFormOnTopOfTl: false,
gradientWindowHeader: false
- }, me.account.clientSettings);
+ }, me.clientSettings);
// ローカルストレージにキャッシュ
localStorage.setItem('me', JSON.stringify(me));
@@ -329,7 +329,7 @@ export default class MiOS extends EventEmitter {
fetched(cachedMe);
// 後から新鮮なデータをフェッチ
- fetchme(cachedMe.account.token, freshData => {
+ fetchme(cachedMe.token, freshData => {
merge(cachedMe, freshData);
});
} else {
@@ -437,7 +437,7 @@ export default class MiOS extends EventEmitter {
}
// Append a credential
- if (this.isSignedIn) (data as any).i = this.i.account.token;
+ if (this.isSignedIn) (data as any).i = this.i.token;
// TODO
//const viaStream = localStorage.getItem('enableExperimental') == 'true';
diff --git a/src/client/app/common/scripts/streaming/drive.ts b/src/client/app/common/scripts/streaming/drive.ts
index f11573685e..7ff85b5946 100644
--- a/src/client/app/common/scripts/streaming/drive.ts
+++ b/src/client/app/common/scripts/streaming/drive.ts
@@ -8,7 +8,7 @@ import MiOS from '../../mios';
export class DriveStream extends Stream {
constructor(os: MiOS, me) {
super(os, 'drive', {
- i: me.account.token
+ i: me.token
});
}
}
diff --git a/src/client/app/common/scripts/streaming/home.ts b/src/client/app/common/scripts/streaming/home.ts
index c198619400..e085801e15 100644
--- a/src/client/app/common/scripts/streaming/home.ts
+++ b/src/client/app/common/scripts/streaming/home.ts
@@ -10,13 +10,13 @@ import MiOS from '../../mios';
export class HomeStream extends Stream {
constructor(os: MiOS, me) {
super(os, '', {
- i: me.account.token
+ i: me.token
});
// 最終利用日時を更新するため定期的にaliveメッセージを送信
setInterval(() => {
this.send({ type: 'alive' });
- me.account.lastUsedAt = new Date();
+ me.lastUsedAt = new Date();
}, 1000 * 60);
// 自分の情報が更新されたとき
diff --git a/src/client/app/common/scripts/streaming/messaging-index.ts b/src/client/app/common/scripts/streaming/messaging-index.ts
index 24f0ce0c9f..84e2174ec4 100644
--- a/src/client/app/common/scripts/streaming/messaging-index.ts
+++ b/src/client/app/common/scripts/streaming/messaging-index.ts
@@ -8,7 +8,7 @@ import MiOS from '../../mios';
export class MessagingIndexStream extends Stream {
constructor(os: MiOS, me) {
super(os, 'messaging-index', {
- i: me.account.token
+ i: me.token
});
}
}
diff --git a/src/client/app/common/scripts/streaming/messaging.ts b/src/client/app/common/scripts/streaming/messaging.ts
index 4c593deb31..c1b5875cfb 100644
--- a/src/client/app/common/scripts/streaming/messaging.ts
+++ b/src/client/app/common/scripts/streaming/messaging.ts
@@ -7,13 +7,13 @@ import MiOS from '../../mios';
export class MessagingStream extends Stream {
constructor(os: MiOS, me, otherparty) {
super(os, 'messaging', {
- i: me.account.token,
+ i: me.token,
otherparty
});
(this as any).on('_connected_', () => {
this.send({
- i: me.account.token
+ i: me.token
});
});
}
diff --git a/src/client/app/common/scripts/streaming/othello-game.ts b/src/client/app/common/scripts/streaming/othello-game.ts
index f34ef35147..b85af8f72b 100644
--- a/src/client/app/common/scripts/streaming/othello-game.ts
+++ b/src/client/app/common/scripts/streaming/othello-game.ts
@@ -4,7 +4,7 @@ import MiOS from '../../mios';
export class OthelloGameStream extends Stream {
constructor(os: MiOS, me, game) {
super(os, 'othello-game', {
- i: me ? me.account.token : null,
+ i: me ? me.token : null,
game: game.id
});
}
diff --git a/src/client/app/common/scripts/streaming/othello.ts b/src/client/app/common/scripts/streaming/othello.ts
index 8c6f4b9c3c..f5d47431cd 100644
--- a/src/client/app/common/scripts/streaming/othello.ts
+++ b/src/client/app/common/scripts/streaming/othello.ts
@@ -5,7 +5,7 @@ import MiOS from '../../mios';
export class OthelloStream extends Stream {
constructor(os: MiOS, me) {
super(os, 'othello', {
- i: me.account.token
+ i: me.token
});
}
}
diff --git a/src/client/app/common/views/components/signin.vue b/src/client/app/common/views/components/signin.vue
index 17154e6b31..da7472b8c7 100644
--- a/src/client/app/common/views/components/signin.vue
+++ b/src/client/app/common/views/components/signin.vue
@@ -6,7 +6,7 @@
<label class="password">
<input v-model="password" type="password" placeholder="%i18n:common.tags.mk-signin.password%" required/>%fa:lock%
</label>
- <label class="token" v-if="user && user.account.twoFactorEnabled">
+ <label class="token" v-if="user && user.twoFactorEnabled">
<input v-model="token" type="number" placeholder="%i18n:common.tags.mk-signin.token%" required/>%fa:lock%
</label>
<button type="submit" :disabled="signing">{{ signing ? '%i18n:common.tags.mk-signin.signing-in%' : '%i18n:common.tags.mk-signin.signin%' }}</button>
@@ -43,7 +43,7 @@ export default Vue.extend({
(this as any).api('signin', {
username: this.username,
password: this.password,
- token: this.user && this.user.account.twoFactorEnabled ? this.token : undefined
+ token: this.user && this.user.twoFactorEnabled ? this.token : undefined
}).then(() => {
location.reload();
}).catch(() => {
diff --git a/src/client/app/common/views/components/twitter-setting.vue b/src/client/app/common/views/components/twitter-setting.vue
index 082d2b435d..00669cd833 100644
--- a/src/client/app/common/views/components/twitter-setting.vue
+++ b/src/client/app/common/views/components/twitter-setting.vue
@@ -1,13 +1,13 @@
<template>
<div class="mk-twitter-setting">
<p>%i18n:common.tags.mk-twitter-setting.description%<a :href="`${docsUrl}/link-to-twitter`" target="_blank">%i18n:common.tags.mk-twitter-setting.detail%</a></p>
- <p class="account" v-if="os.i.account.twitter" :title="`Twitter ID: ${os.i.account.twitter.userId}`">%i18n:common.tags.mk-twitter-setting.connected-to%: <a :href="`https://twitter.com/${os.i.account.twitter.screenName}`" target="_blank">@{{ os.i.account.twitter.screenName }}</a></p>
+ <p class="account" v-if="os.i.twitter" :title="`Twitter ID: ${os.i.twitter.userId}`">%i18n:common.tags.mk-twitter-setting.connected-to%: <a :href="`https://twitter.com/${os.i.twitter.screenName}`" target="_blank">@{{ os.i.twitter.screenName }}</a></p>
<p>
- <a :href="`${apiUrl}/connect/twitter`" target="_blank" @click.prevent="connect">{{ os.i.account.twitter ? '%i18n:common.tags.mk-twitter-setting.reconnect%' : '%i18n:common.tags.mk-twitter-setting.connect%' }}</a>
- <span v-if="os.i.account.twitter"> or </span>
- <a :href="`${apiUrl}/disconnect/twitter`" target="_blank" v-if="os.i.account.twitter" @click.prevent="disconnect">%i18n:common.tags.mk-twitter-setting.disconnect%</a>
+ <a :href="`${apiUrl}/connect/twitter`" target="_blank" @click.prevent="connect">{{ os.i.twitter ? '%i18n:common.tags.mk-twitter-setting.reconnect%' : '%i18n:common.tags.mk-twitter-setting.connect%' }}</a>
+ <span v-if="os.i.twitter"> or </span>
+ <a :href="`${apiUrl}/disconnect/twitter`" target="_blank" v-if="os.i.twitter" @click.prevent="disconnect">%i18n:common.tags.mk-twitter-setting.disconnect%</a>
</p>
- <p class="id" v-if="os.i.account.twitter">Twitter ID: {{ os.i.account.twitter.userId }}</p>
+ <p class="id" v-if="os.i.twitter">Twitter ID: {{ os.i.twitter.userId }}</p>
</div>
</template>
@@ -25,7 +25,7 @@ export default Vue.extend({
},
mounted() {
this.$watch('os.i', () => {
- if ((this as any).os.i.account.twitter) {
+ if ((this as any).os.i.twitter) {
if (this.form) this.form.close();
}
}, {
diff --git a/src/client/app/common/views/components/uploader.vue b/src/client/app/common/views/components/uploader.vue
index c74a1edb41..ccad50dc37 100644
--- a/src/client/app/common/views/components/uploader.vue
+++ b/src/client/app/common/views/components/uploader.vue
@@ -50,7 +50,7 @@ export default Vue.extend({
reader.readAsDataURL(file);
const data = new FormData();
- data.append('i', (this as any).os.i.account.token);
+ data.append('i', (this as any).os.i.token);
data.append('file', file);
if (folder) data.append('folderId', folder);
diff --git a/src/client/app/desktop/api/update-avatar.ts b/src/client/app/desktop/api/update-avatar.ts
index 36a2ffe914..dc89adeb86 100644
--- a/src/client/app/desktop/api/update-avatar.ts
+++ b/src/client/app/desktop/api/update-avatar.ts
@@ -16,7 +16,7 @@ export default (os: OS) => (cb, file = null) => {
w.$once('cropped', blob => {
const data = new FormData();
- data.append('i', os.i.account.token);
+ data.append('i', os.i.token);
data.append('file', blob, file.name + '.cropped.png');
os.api('drive/folders/find', {
diff --git a/src/client/app/desktop/api/update-banner.ts b/src/client/app/desktop/api/update-banner.ts
index e66dbf016b..5f10bf2856 100644
--- a/src/client/app/desktop/api/update-banner.ts
+++ b/src/client/app/desktop/api/update-banner.ts
@@ -16,7 +16,7 @@ export default (os: OS) => (cb, file = null) => {
w.$once('cropped', blob => {
const data = new FormData();
- data.append('i', os.i.account.token);
+ data.append('i', os.i.token);
data.append('file', blob, file.name + '.cropped.png');
os.api('drive/folders/find', {
diff --git a/src/client/app/desktop/views/components/home.vue b/src/client/app/desktop/views/components/home.vue
index 7145ddce03..90e9d1b785 100644
--- a/src/client/app/desktop/views/components/home.vue
+++ b/src/client/app/desktop/views/components/home.vue
@@ -53,7 +53,7 @@
<div class="main">
<a @click="hint">カスタマイズのヒント</a>
<div>
- <mk-post-form v-if="os.i.account.clientSettings.showPostFormOnTopOfTl"/>
+ <mk-post-form v-if="os.i.clientSettings.showPostFormOnTopOfTl"/>
<mk-timeline ref="tl" @loaded="onTlLoaded"/>
</div>
</div>
@@ -63,7 +63,7 @@
<component v-for="widget in widgets[place]" :is="`mkw-${widget.name}`" :key="widget.id" :ref="widget.id" :widget="widget" @chosen="warp"/>
</div>
<div class="main">
- <mk-post-form v-if="os.i.account.clientSettings.showPostFormOnTopOfTl"/>
+ <mk-post-form v-if="os.i.clientSettings.showPostFormOnTopOfTl"/>
<mk-timeline ref="tl" @loaded="onTlLoaded" v-if="mode == 'timeline'"/>
<mk-mentions @loaded="onTlLoaded" v-if="mode == 'mentions'"/>
</div>
@@ -82,7 +82,10 @@ export default Vue.extend({
XDraggable
},
props: {
- customize: Boolean,
+ customize: {
+ type: Boolean,
+ default: false
+ },
mode: {
type: String,
default: 'timeline'
@@ -104,16 +107,16 @@ export default Vue.extend({
home: {
get(): any[] {
//#region 互換性のため
- (this as any).os.i.account.clientSettings.home.forEach(w => {
+ (this as any).os.i.clientSettings.home.forEach(w => {
if (w.name == 'rss-reader') w.name = 'rss';
if (w.name == 'user-recommendation') w.name = 'users';
if (w.name == 'recommended-polls') w.name = 'polls';
});
//#endregion
- return (this as any).os.i.account.clientSettings.home;
+ return (this as any).os.i.clientSettings.home;
},
set(value) {
- (this as any).os.i.account.clientSettings.home = value;
+ (this as any).os.i.clientSettings.home = value;
}
},
left(): any[] {
@@ -126,7 +129,7 @@ export default Vue.extend({
created() {
this.widgets.left = this.left;
this.widgets.right = this.right;
- this.$watch('os.i.account.clientSettings', i => {
+ this.$watch('os.i.clientSettings', i => {
this.widgets.left = this.left;
this.widgets.right = this.right;
}, {
@@ -161,17 +164,17 @@ export default Vue.extend({
},
onHomeUpdated(data) {
if (data.home) {
- (this as any).os.i.account.clientSettings.home = data.home;
+ (this as any).os.i.clientSettings.home = data.home;
this.widgets.left = data.home.filter(w => w.place == 'left');
this.widgets.right = data.home.filter(w => w.place == 'right');
} else {
- const w = (this as any).os.i.account.clientSettings.home.find(w => w.id == data.id);
+ const w = (this as any).os.i.clientSettings.home.find(w => w.id == data.id);
if (w != null) {
w.data = data.data;
this.$refs[w.id][0].preventSave = true;
this.$refs[w.id][0].props = w.data;
- this.widgets.left = (this as any).os.i.account.clientSettings.home.filter(w => w.place == 'left');
- this.widgets.right = (this as any).os.i.account.clientSettings.home.filter(w => w.place == 'right');
+ this.widgets.left = (this as any).os.i.clientSettings.home.filter(w => w.place == 'left');
+ this.widgets.right = (this as any).os.i.clientSettings.home.filter(w => w.place == 'right');
}
}
},
diff --git a/src/client/app/desktop/views/components/note-detail.vue b/src/client/app/desktop/views/components/note-detail.vue
index 790f797ad6..df7c33dfa8 100644
--- a/src/client/app/desktop/views/components/note-detail.vue
+++ b/src/client/app/desktop/views/components/note-detail.vue
@@ -115,7 +115,7 @@ export default Vue.extend({
isRenote(): boolean {
return (this.note.renote &&
this.note.text == null &&
- this.note.mediaIds == null &&
+ this.note.mediaIds.length == 0 &&
this.note.poll == null);
},
p(): any {
@@ -168,7 +168,7 @@ export default Vue.extend({
// Draw map
if (this.p.geo) {
- const shouldShowMap = (this as any).os.isSignedIn ? (this as any).os.i.account.clientSettings.showMaps : true;
+ const shouldShowMap = (this as any).os.isSignedIn ? (this as any).os.i.clientSettings.showMaps : true;
if (shouldShowMap) {
(this as any).os.getGoogleMaps().then(maps => {
const uluru = new maps.LatLng(this.p.geo.coordinates[1], this.p.geo.coordinates[0]);
diff --git a/src/client/app/desktop/views/components/notes.note.vue b/src/client/app/desktop/views/components/notes.note.vue
index 924642c01a..4547ac58bb 100644
--- a/src/client/app/desktop/views/components/notes.note.vue
+++ b/src/client/app/desktop/views/components/notes.note.vue
@@ -5,25 +5,25 @@
</div>
<div class="renote" v-if="isRenote">
<p>
- <router-link class="avatar-anchor" :to="`/@${acct}`" v-user-preview="note.userId">
+ <router-link class="avatar-anchor" :to="`/@${getAcct(note.user)}`" v-user-preview="note.userId">
<img class="avatar" :src="`${note.user.avatarUrl}?thumbnail&size=32`" alt="avatar"/>
</router-link>
%fa:retweet%
<span>{{ '%i18n:desktop.tags.mk-timeline-note.reposted-by%'.substr(0, '%i18n:desktop.tags.mk-timeline-note.reposted-by%'.indexOf('{')) }}</span>
- <a class="name" :href="`/@${acct}`" v-user-preview="note.userId">{{ getUserName(note.user) }}</a>
+ <a class="name" :href="`/@${getAcct(note.user)}`" v-user-preview="note.userId">{{ getUserName(note.user) }}</a>
<span>{{ '%i18n:desktop.tags.mk-timeline-note.reposted-by%'.substr('%i18n:desktop.tags.mk-timeline-note.reposted-by%'.indexOf('}') + 1) }}</span>
</p>
<mk-time :time="note.createdAt"/>
</div>
<article>
- <router-link class="avatar-anchor" :to="`/@${acct}`">
+ <router-link class="avatar-anchor" :to="`/@${getAcct(p.user)}`">
<img class="avatar" :src="`${p.user.avatarUrl}?thumbnail&size=64`" alt="avatar" v-user-preview="p.user.id"/>
</router-link>
<div class="main">
<header>
- <router-link class="name" :to="`/@${acct}`" v-user-preview="p.user.id">{{ acct }}</router-link>
- <span class="is-bot" v-if="p.user.host === null && p.user.account.isBot">bot</span>
- <span class="username">@{{ acct }}</span>
+ <router-link class="name" :to="`/@${getAcct(p.user)}`" v-user-preview="p.user.id">{{ getUserName(p) }}</router-link>
+ <span class="is-bot" v-if="p.user.host === null && p.user.isBot">bot</span>
+ <span class="username">@{{ getAcct(p.user) }}</span>
<div class="info">
<span class="app" v-if="p.app">via <b>{{ p.app.name }}</b></span>
<span class="mobile" v-if="p.viaMobile">%fa:mobile-alt%</span>
@@ -117,21 +117,18 @@ export default Vue.extend({
return {
isDetailOpened: false,
connection: null,
- connectionId: null
+ connectionId: null,
+ getAcct,
+ getUserName
};
},
computed: {
- acct(): string {
- return getAcct(this.p.user);
- },
- name(): string {
- return getUserName(this.p.user);
- },
+
isRenote(): boolean {
return (this.note.renote &&
this.note.text == null &&
- this.note.mediaIds == null &&
+ this.note.mediaIds.length == 0 &&
this.note.poll == null);
},
p(): any {
@@ -178,7 +175,7 @@ export default Vue.extend({
// Draw map
if (this.p.geo) {
- const shouldShowMap = (this as any).os.isSignedIn ? (this as any).os.i.account.clientSettings.showMaps : true;
+ const shouldShowMap = (this as any).os.isSignedIn ? (this as any).os.i.clientSettings.showMaps : true;
if (shouldShowMap) {
(this as any).os.getGoogleMaps().then(maps => {
const uluru = new maps.LatLng(this.p.geo.coordinates[1], this.p.geo.coordinates[0]);
diff --git a/src/client/app/desktop/views/components/post-detail.vue b/src/client/app/desktop/views/components/post-detail.vue
index 790f797ad6..df7c33dfa8 100644
--- a/src/client/app/desktop/views/components/post-detail.vue
+++ b/src/client/app/desktop/views/components/post-detail.vue
@@ -115,7 +115,7 @@ export default Vue.extend({
isRenote(): boolean {
return (this.note.renote &&
this.note.text == null &&
- this.note.mediaIds == null &&
+ this.note.mediaIds.length == 0 &&
this.note.poll == null);
},
p(): any {
@@ -168,7 +168,7 @@ export default Vue.extend({
// Draw map
if (this.p.geo) {
- const shouldShowMap = (this as any).os.isSignedIn ? (this as any).os.i.account.clientSettings.showMaps : true;
+ const shouldShowMap = (this as any).os.isSignedIn ? (this as any).os.i.clientSettings.showMaps : true;
if (shouldShowMap) {
(this as any).os.getGoogleMaps().then(maps => {
const uluru = new maps.LatLng(this.p.geo.coordinates[1], this.p.geo.coordinates[0]);
diff --git a/src/client/app/desktop/views/components/posts.post.vue b/src/client/app/desktop/views/components/posts.post.vue
index 924642c01a..d7c21dfa07 100644
--- a/src/client/app/desktop/views/components/posts.post.vue
+++ b/src/client/app/desktop/views/components/posts.post.vue
@@ -22,7 +22,7 @@
<div class="main">
<header>
<router-link class="name" :to="`/@${acct}`" v-user-preview="p.user.id">{{ acct }}</router-link>
- <span class="is-bot" v-if="p.user.host === null && p.user.account.isBot">bot</span>
+ <span class="is-bot" v-if="p.user.host === null && p.user.isBot">bot</span>
<span class="username">@{{ acct }}</span>
<div class="info">
<span class="app" v-if="p.app">via <b>{{ p.app.name }}</b></span>
@@ -131,7 +131,7 @@ export default Vue.extend({
isRenote(): boolean {
return (this.note.renote &&
this.note.text == null &&
- this.note.mediaIds == null &&
+ this.note.mediaIds.length == 0 &&
this.note.poll == null);
},
p(): any {
@@ -178,7 +178,7 @@ export default Vue.extend({
// Draw map
if (this.p.geo) {
- const shouldShowMap = (this as any).os.isSignedIn ? (this as any).os.i.account.clientSettings.showMaps : true;
+ const shouldShowMap = (this as any).os.isSignedIn ? (this as any).os.i.clientSettings.showMaps : true;
if (shouldShowMap) {
(this as any).os.getGoogleMaps().then(maps => {
const uluru = new maps.LatLng(this.p.geo.coordinates[1], this.p.geo.coordinates[0]);
diff --git a/src/client/app/desktop/views/components/settings.2fa.vue b/src/client/app/desktop/views/components/settings.2fa.vue
index b8dd1dfd9b..fb2dc30f2a 100644
--- a/src/client/app/desktop/views/components/settings.2fa.vue
+++ b/src/client/app/desktop/views/components/settings.2fa.vue
@@ -2,8 +2,8 @@
<div class="2fa">
<p>%i18n:desktop.tags.mk-2fa-setting.intro%<a href="%i18n:desktop.tags.mk-2fa-setting.url%" target="_blank">%i18n:desktop.tags.mk-2fa-setting.detail%</a></p>
<div class="ui info warn"><p>%fa:exclamation-triangle%%i18n:desktop.tags.mk-2fa-setting.caution%</p></div>
- <p v-if="!data && !os.i.account.twoFactorEnabled"><button @click="register" class="ui primary">%i18n:desktop.tags.mk-2fa-setting.register%</button></p>
- <template v-if="os.i.account.twoFactorEnabled">
+ <p v-if="!data && !os.i.twoFactorEnabled"><button @click="register" class="ui primary">%i18n:desktop.tags.mk-2fa-setting.register%</button></p>
+ <template v-if="os.i.twoFactorEnabled">
<p>%i18n:desktop.tags.mk-2fa-setting.already-registered%</p>
<button @click="unregister" class="ui">%i18n:desktop.tags.mk-2fa-setting.unregister%</button>
</template>
@@ -54,7 +54,7 @@ export default Vue.extend({
password: password
}).then(() => {
(this as any).apis.notify('%i18n:desktop.tags.mk-2fa-setting.unregistered%');
- (this as any).os.i.account.twoFactorEnabled = false;
+ (this as any).os.i.twoFactorEnabled = false;
});
});
},
@@ -64,7 +64,7 @@ export default Vue.extend({
token: this.token
}).then(() => {
(this as any).apis.notify('%i18n:desktop.tags.mk-2fa-setting.success%');
- (this as any).os.i.account.twoFactorEnabled = true;
+ (this as any).os.i.twoFactorEnabled = true;
}).catch(() => {
(this as any).apis.notify('%i18n:desktop.tags.mk-2fa-setting.failed%');
});
diff --git a/src/client/app/desktop/views/components/settings.api.vue b/src/client/app/desktop/views/components/settings.api.vue
index 0d5921ab7f..5831f82075 100644
--- a/src/client/app/desktop/views/components/settings.api.vue
+++ b/src/client/app/desktop/views/components/settings.api.vue
@@ -1,6 +1,6 @@
<template>
<div class="root api">
- <p>Token: <code>{{ os.i.account.token }}</code></p>
+ <p>Token: <code>{{ os.i.token }}</code></p>
<p>%i18n:desktop.tags.mk-api-info.intro%</p>
<div class="ui info warn"><p>%fa:exclamation-triangle%%i18n:desktop.tags.mk-api-info.caution%</p></div>
<p>%i18n:desktop.tags.mk-api-info.regeneration-of-token%</p>
diff --git a/src/client/app/desktop/views/components/settings.profile.vue b/src/client/app/desktop/views/components/settings.profile.vue
index 28be48e0a8..324a939f95 100644
--- a/src/client/app/desktop/views/components/settings.profile.vue
+++ b/src/client/app/desktop/views/components/settings.profile.vue
@@ -24,7 +24,7 @@
<button class="ui primary" @click="save">%i18n:desktop.tags.mk-profile-setting.save%</button>
<section>
<h2>その他</h2>
- <mk-switch v-model="os.i.account.isBot" @change="onChangeIsBot" text="このアカウントはbotです"/>
+ <mk-switch v-model="os.i.isBot" @change="onChangeIsBot" text="このアカウントはbotです"/>
</section>
</div>
</template>
@@ -43,9 +43,9 @@ export default Vue.extend({
},
created() {
this.name = (this as any).os.i.name || '';
- this.location = (this as any).os.i.account.profile.location;
+ this.location = (this as any).os.i.profile.location;
this.description = (this as any).os.i.description;
- this.birthday = (this as any).os.i.account.profile.birthday;
+ this.birthday = (this as any).os.i.profile.birthday;
},
methods: {
updateAvatar() {
@@ -63,7 +63,7 @@ export default Vue.extend({
},
onChangeIsBot() {
(this as any).api('i/update', {
- isBot: (this as any).os.i.account.isBot
+ isBot: (this as any).os.i.isBot
});
}
}
diff --git a/src/client/app/desktop/views/components/settings.vue b/src/client/app/desktop/views/components/settings.vue
index fd82c171c1..4184ae82c7 100644
--- a/src/client/app/desktop/views/components/settings.vue
+++ b/src/client/app/desktop/views/components/settings.vue
@@ -20,7 +20,7 @@
<section class="web" v-show="page == 'web'">
<h1>動作</h1>
- <mk-switch v-model="os.i.account.clientSettings.fetchOnScroll" @change="onChangeFetchOnScroll" text="スクロールで自動読み込み">
+ <mk-switch v-model="os.i.clientSettings.fetchOnScroll" @change="onChangeFetchOnScroll" text="スクロールで自動読み込み">
<span>ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。</span>
</mk-switch>
<mk-switch v-model="autoPopout" text="ウィンドウの自動ポップアウト">
@@ -33,11 +33,11 @@
<div class="div">
<button class="ui button" @click="customizeHome">ホームをカスタマイズ</button>
</div>
- <mk-switch v-model="os.i.account.clientSettings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="タイムライン上部に投稿フォームを表示する"/>
- <mk-switch v-model="os.i.account.clientSettings.showMaps" @change="onChangeShowMaps" text="マップの自動展開">
+ <mk-switch v-model="os.i.clientSettings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="タイムライン上部に投稿フォームを表示する"/>
+ <mk-switch v-model="os.i.clientSettings.showMaps" @change="onChangeShowMaps" text="マップの自動展開">
<span>位置情報が添付された投稿のマップを自動的に展開します。</span>
</mk-switch>
- <mk-switch v-model="os.i.account.clientSettings.gradientWindowHeader" @change="onChangeGradientWindowHeader" text="ウィンドウのタイトルバーにグラデーションを使用"/>
+ <mk-switch v-model="os.i.clientSettings.gradientWindowHeader" @change="onChangeGradientWindowHeader" text="ウィンドウのタイトルバーにグラデーションを使用"/>
</section>
<section class="web" v-show="page == 'web'">
@@ -57,7 +57,7 @@
<section class="web" v-show="page == 'web'">
<h1>モバイル</h1>
- <mk-switch v-model="os.i.account.clientSettings.disableViaMobile" @change="onChangeDisableViaMobile" text="「モバイルからの投稿」フラグを付けない"/>
+ <mk-switch v-model="os.i.clientSettings.disableViaMobile" @change="onChangeDisableViaMobile" text="「モバイルからの投稿」フラグを付けない"/>
</section>
<section class="web" v-show="page == 'web'">
@@ -86,7 +86,7 @@
<section class="notification" v-show="page == 'notification'">
<h1>通知</h1>
- <mk-switch v-model="os.i.account.settings.autoWatch" @change="onChangeAutoWatch" text="投稿の自動ウォッチ">
+ <mk-switch v-model="os.i.settings.autoWatch" @change="onChangeAutoWatch" text="投稿の自動ウォッチ">
<span>リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。</span>
</mk-switch>
</section>
diff --git a/src/client/app/desktop/views/components/timeline.vue b/src/client/app/desktop/views/components/timeline.vue
index 6d049eee9c..ea8f0053bc 100644
--- a/src/client/app/desktop/views/components/timeline.vue
+++ b/src/client/app/desktop/views/components/timeline.vue
@@ -107,7 +107,7 @@ export default Vue.extend({
this.fetch();
},
onScroll() {
- if ((this as any).os.i.account.clientSettings.fetchOnScroll !== false) {
+ if ((this as any).os.i.clientSettings.fetchOnScroll !== false) {
const current = window.scrollY + window.innerHeight;
if (current > document.body.offsetHeight - 8) this.more();
}
diff --git a/src/client/app/desktop/views/components/ui.header.vue b/src/client/app/desktop/views/components/ui.header.vue
index 7d93847fab..527d10843a 100644
--- a/src/client/app/desktop/views/components/ui.header.vue
+++ b/src/client/app/desktop/views/components/ui.header.vue
@@ -37,8 +37,8 @@ import getUserName from '../../../../../renderers/get-user-name';
export default Vue.extend({
computed: {
- name() {
- return getUserName(this.os.i);
+ name(): string {
+ return getUserName((this as any).os.i);
}
},
components: {
@@ -51,9 +51,9 @@ export default Vue.extend({
},
mounted() {
if ((this as any).os.isSignedIn) {
- const ago = (new Date().getTime() - new Date((this as any).os.i.account.lastUsedAt).getTime()) / 1000
+ const ago = (new Date().getTime() - new Date((this as any).os.i.lastUsedAt).getTime()) / 1000
const isHisasiburi = ago >= 3600;
- (this as any).os.i.account.lastUsedAt = new Date();
+ (this as any).os.i.lastUsedAt = new Date();
if (isHisasiburi) {
(this.$refs.welcomeback as any).style.display = 'block';
(this.$refs.main as any).style.overflow = 'hidden';
diff --git a/src/client/app/desktop/views/components/widget-container.vue b/src/client/app/desktop/views/components/widget-container.vue
index 68c5bcb8dc..188a67313e 100644
--- a/src/client/app/desktop/views/components/widget-container.vue
+++ b/src/client/app/desktop/views/components/widget-container.vue
@@ -24,8 +24,8 @@ export default Vue.extend({
computed: {
withGradient(): boolean {
return (this as any).os.isSignedIn
- ? (this as any).os.i.account.clientSettings.gradientWindowHeader != null
- ? (this as any).os.i.account.clientSettings.gradientWindowHeader
+ ? (this as any).os.i.clientSettings.gradientWindowHeader != null
+ ? (this as any).os.i.clientSettings.gradientWindowHeader
: false
: false;
}
diff --git a/src/client/app/desktop/views/components/window.vue b/src/client/app/desktop/views/components/window.vue
index 48dc46febd..e2cab21799 100644
--- a/src/client/app/desktop/views/components/window.vue
+++ b/src/client/app/desktop/views/components/window.vue
@@ -92,8 +92,8 @@ export default Vue.extend({
},
withGradient(): boolean {
return (this as any).os.isSignedIn
- ? (this as any).os.i.account.clientSettings.gradientWindowHeader != null
- ? (this as any).os.i.account.clientSettings.gradientWindowHeader
+ ? (this as any).os.i.clientSettings.gradientWindowHeader != null
+ ? (this as any).os.i.clientSettings.gradientWindowHeader
: false
: false;
}
diff --git a/src/client/app/desktop/views/pages/user/user.header.vue b/src/client/app/desktop/views/pages/user/user.header.vue
index 5c6746d5dc..ceeb784315 100644
--- a/src/client/app/desktop/views/pages/user/user.header.vue
+++ b/src/client/app/desktop/views/pages/user/user.header.vue
@@ -9,7 +9,7 @@
<div class="title">
<p class="name">{{ name }}</p>
<p class="username">@{{ acct }}</p>
- <p class="location" v-if="user.host === null && user.account.profile.location">%fa:map-marker%{{ user.account.profile.location }}</p>
+ <p class="location" v-if="user.host === null && user.profile.location">%fa:map-marker%{{ user.profile.location }}</p>
</div>
<footer>
<router-link :to="`/@${acct}`" :data-active="$parent.page == 'home'">%fa:home%概要</router-link>
diff --git a/src/client/app/desktop/views/pages/user/user.home.vue b/src/client/app/desktop/views/pages/user/user.home.vue
index ed3b1c7104..c254a320ce 100644
--- a/src/client/app/desktop/views/pages/user/user.home.vue
+++ b/src/client/app/desktop/views/pages/user/user.home.vue
@@ -5,7 +5,7 @@
<x-profile :user="user"/>
<x-photos :user="user"/>
<x-followers-you-know v-if="os.isSignedIn && os.i.id != user.id" :user="user"/>
- <p v-if="user.host === null">%i18n:desktop.tags.mk-user.last-used-at%: <b><mk-time :time="user.account.lastUsedAt"/></b></p>
+ <p v-if="user.host === null">%i18n:desktop.tags.mk-user.last-used-at%: <b><mk-time :time="user.lastUsedAt"/></b></p>
</div>
</div>
<main>
diff --git a/src/client/app/desktop/views/pages/user/user.profile.vue b/src/client/app/desktop/views/pages/user/user.profile.vue
index 2a82ba7861..44f20c2bc0 100644
--- a/src/client/app/desktop/views/pages/user/user.profile.vue
+++ b/src/client/app/desktop/views/pages/user/user.profile.vue
@@ -7,11 +7,11 @@
<p v-if="!user.isMuted"><a @click="mute">%i18n:desktop.tags.mk-user.mute%</a></p>
</div>
<div class="description" v-if="user.description">{{ user.description }}</div>
- <div class="birthday" v-if="user.host === null && user.account.profile.birthday">
- <p>%fa:birthday-cake%{{ user.account.profile.birthday.replace('-', '年').replace('-', '月') + '日' }} ({{ age }}歳)</p>
+ <div class="birthday" v-if="user.host === null && user.profile.birthday">
+ <p>%fa:birthday-cake%{{ user.profile.birthday.replace('-', '年').replace('-', '月') + '日' }} ({{ age }}歳)</p>
</div>
- <div class="twitter" v-if="user.host === null && user.account.twitter">
- <p>%fa:B twitter%<a :href="`https://twitter.com/${user.account.twitter.screenName}`" target="_blank">@{{ user.account.twitter.screenName }}</a></p>
+ <div class="twitter" v-if="user.host === null && user.twitter">
+ <p>%fa:B twitter%<a :href="`https://twitter.com/${user.twitter.screenName}`" target="_blank">@{{ user.twitter.screenName }}</a></p>
</div>
<div class="status">
<p class="notes-count">%fa:angle-right%<a>{{ user.notesCount }}</a><b>投稿</b></p>
@@ -31,7 +31,7 @@ export default Vue.extend({
props: ['user'],
computed: {
age(): number {
- return age(this.user.account.profile.birthday);
+ return age(this.user.profile.birthday);
}
},
methods: {
diff --git a/src/client/app/mobile/views/components/note-detail.vue b/src/client/app/mobile/views/components/note-detail.vue
index e1682e58ed..483f5aaf3b 100644
--- a/src/client/app/mobile/views/components/note-detail.vue
+++ b/src/client/app/mobile/views/components/note-detail.vue
@@ -127,7 +127,7 @@ export default Vue.extend({
isRenote(): boolean {
return (this.note.renote &&
this.note.text == null &&
- this.note.mediaIds == null &&
+ this.note.mediaIds.length == 0 &&
this.note.poll == null);
},
p(): any {
@@ -165,7 +165,7 @@ export default Vue.extend({
// Draw map
if (this.p.geo) {
- const shouldShowMap = (this as any).os.isSignedIn ? (this as any).os.i.account.clientSettings.showMaps : true;
+ const shouldShowMap = (this as any).os.isSignedIn ? (this as any).os.i.clientSettings.showMaps : true;
if (shouldShowMap) {
(this as any).os.getGoogleMaps().then(maps => {
const uluru = new maps.LatLng(this.p.geo.coordinates[1], this.p.geo.coordinates[0]);
diff --git a/src/client/app/mobile/views/components/note.vue b/src/client/app/mobile/views/components/note.vue
index 4b33c6f071..295fe4d6a8 100644
--- a/src/client/app/mobile/views/components/note.vue
+++ b/src/client/app/mobile/views/components/note.vue
@@ -5,25 +5,25 @@
</div>
<div class="renote" v-if="isRenote">
<p>
- <router-link class="avatar-anchor" :to="`/@${acct}`">
+ <router-link class="avatar-anchor" :to="`/@${getAcct(note.user)}`">
<img class="avatar" :src="`${note.user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
</router-link>
%fa:retweet%
<span>{{ '%i18n:mobile.tags.mk-timeline-note.reposted-by%'.substr(0, '%i18n:mobile.tags.mk-timeline-note.reposted-by%'.indexOf('{')) }}</span>
- <router-link class="name" :to="`/@${acct}`">{{ name }}</router-link>
+ <router-link class="name" :to="`/@${getAcct(note.user)}`">{{ getUserName(note.user) }}</router-link>
<span>{{ '%i18n:mobile.tags.mk-timeline-note.reposted-by%'.substr('%i18n:mobile.tags.mk-timeline-note.reposted-by%'.indexOf('}') + 1) }}</span>
</p>
<mk-time :time="note.createdAt"/>
</div>
<article>
- <router-link class="avatar-anchor" :to="`/@${pAcct}`">
+ <router-link class="avatar-anchor" :to="`/@${getAcct(p.user)}`">
<img class="avatar" :src="`${p.user.avatarUrl}?thumbnail&size=96`" alt="avatar"/>
</router-link>
<div class="main">
<header>
- <router-link class="name" :to="`/@${pAcct}`">{{ pName }}</router-link>
- <span class="is-bot" v-if="p.user.host === null && p.user.account.isBot">bot</span>
- <span class="username">@{{ pAcct }}</span>
+ <router-link class="name" :to="`/@${getAcct(p.user)}`">{{ getUserName(p.user) }}</router-link>
+ <span class="is-bot" v-if="p.user.host === null && p.user.isBot">bot</span>
+ <span class="username">@{{ getAcct(p.user) }}</span>
<div class="info">
<span class="mobile" v-if="p.viaMobile">%fa:mobile-alt%</span>
<router-link class="created-at" :to="url">
@@ -95,27 +95,17 @@ export default Vue.extend({
data() {
return {
connection: null,
- connectionId: null
+ connectionId: null,
+ getAcct,
+ getUserName
};
},
computed: {
- acct(): string {
- return getAcct(this.note.user);
- },
- name(): string {
- return getUserName(this.note.user);
- },
- pAcct(): string {
- return getAcct(this.p.user);
- },
- pName(): string {
- return getUserName(this.p.user);
- },
isRenote(): boolean {
return (this.note.renote &&
this.note.text == null &&
- this.note.mediaIds == null &&
+ this.note.mediaIds.length == 0 &&
this.note.poll == null);
},
p(): any {
@@ -159,7 +149,7 @@ export default Vue.extend({
// Draw map
if (this.p.geo) {
- const shouldShowMap = (this as any).os.isSignedIn ? (this as any).os.i.account.clientSettings.showMaps : true;
+ const shouldShowMap = (this as any).os.isSignedIn ? (this as any).os.i.clientSettings.showMaps : true;
if (shouldShowMap) {
(this as any).os.getGoogleMaps().then(maps => {
const uluru = new maps.LatLng(this.p.geo.coordinates[1], this.p.geo.coordinates[0]);
diff --git a/src/client/app/mobile/views/components/post-detail.vue b/src/client/app/mobile/views/components/post-detail.vue
deleted file mode 100644
index e1682e58ed..0000000000
--- a/src/client/app/mobile/views/components/post-detail.vue
+++ /dev/null
@@ -1,462 +0,0 @@
-<template>
-<div class="mk-note-detail">
- <button
- class="more"
- v-if="p.reply && p.reply.replyId && context == null"
- @click="fetchContext"
- :disabled="fetchingContext"
- >
- <template v-if="!contextFetching">%fa:ellipsis-v%</template>
- <template v-if="contextFetching">%fa:spinner .pulse%</template>
- </button>
- <div class="context">
- <x-sub v-for="note in context" :key="note.id" :note="note"/>
- </div>
- <div class="reply-to" v-if="p.reply">
- <x-sub :note="p.reply"/>
- </div>
- <div class="renote" v-if="isRenote">
- <p>
- <router-link class="avatar-anchor" :to="`/@${acct}`">
- <img class="avatar" :src="`${note.user.avatarUrl}?thumbnail&size=32`" alt="avatar"/>
- </router-link>
- %fa:retweet%
- <router-link class="name" :to="`/@${acct}`">
- {{ name }}
- </router-link>
- がRenote
- </p>
- </div>
- <article>
- <header>
- <router-link class="avatar-anchor" :to="`/@${pAcct}`">
- <img class="avatar" :src="`${p.user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
- </router-link>
- <div>
- <router-link class="name" :to="`/@${pAcct}`">{{ pName }}</router-link>
- <span class="username">@{{ pAcct }}</span>
- </div>
- </header>
- <div class="body">
- <mk-note-html v-if="p.text" :ast="p.text" :i="os.i" :class="$style.text"/>
- <div class="tags" v-if="p.tags && p.tags.length > 0">
- <router-link v-for="tag in p.tags" :key="tag" :to="`/search?q=#${tag}`">{{ tag }}</router-link>
- </div>
- <div class="media" v-if="p.media.length > 0">
- <mk-media-list :media-list="p.media"/>
- </div>
- <mk-poll v-if="p.poll" :note="p"/>
- <mk-url-preview v-for="url in urls" :url="url" :key="url"/>
- <a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% 位置情報</a>
- <div class="map" v-if="p.geo" ref="map"></div>
- <div class="renote" v-if="p.renote">
- <mk-note-preview :note="p.renote"/>
- </div>
- </div>
- <router-link class="time" :to="`/@${pAcct}/${p.id}`">
- <mk-time :time="p.createdAt" mode="detail"/>
- </router-link>
- <footer>
- <mk-reactions-viewer :note="p"/>
- <button @click="reply" title="%i18n:mobile.tags.mk-note-detail.reply%">
- %fa:reply%<p class="count" v-if="p.repliesCount > 0">{{ p.repliesCount }}</p>
- </button>
- <button @click="renote" title="Renote">
- %fa:retweet%<p class="count" v-if="p.renoteCount > 0">{{ p.renoteCount }}</p>
- </button>
- <button :class="{ reacted: p.myReaction != null }" @click="react" ref="reactButton" title="%i18n:mobile.tags.mk-note-detail.reaction%">
- %fa:plus%<p class="count" v-if="p.reactions_count > 0">{{ p.reactions_count }}</p>
- </button>
- <button @click="menu" ref="menuButton">
- %fa:ellipsis-h%
- </button>
- </footer>
- </article>
- <div class="replies" v-if="!compact">
- <x-sub v-for="note in replies" :key="note.id" :note="note"/>
- </div>
-</div>
-</template>
-
-<script lang="ts">
-import Vue from 'vue';
-import getAcct from '../../../../../acct/render';
-import getUserName from '../../../../../renderers/get-user-name';
-import parse from '../../../../../text/parse';
-
-import MkNoteMenu from '../../../common/views/components/note-menu.vue';
-import MkReactionPicker from '../../../common/views/components/reaction-picker.vue';
-import XSub from './note-detail.sub.vue';
-
-export default Vue.extend({
- components: {
- XSub
- },
-
- props: {
- note: {
- type: Object,
- required: true
- },
- compact: {
- default: false
- }
- },
-
- data() {
- return {
- context: [],
- contextFetching: false,
- replies: []
- };
- },
-
- computed: {
- acct(): string {
- return getAcct(this.note.user);
- },
- name(): string {
- return getUserName(this.note.user);
- },
- pAcct(): string {
- return getAcct(this.p.user);
- },
- pName(): string {
- return getUserName(this.p.user);
- },
- isRenote(): boolean {
- return (this.note.renote &&
- this.note.text == null &&
- this.note.mediaIds == null &&
- 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)
- .map(key => this.p.reactionCounts[key])
- .reduce((a, b) => a + b)
- : 0;
- },
- urls(): string[] {
- if (this.p.text) {
- const ast = parse(this.p.text);
- return ast
- .filter(t => (t.type == 'url' || t.type == 'link') && !t.silent)
- .map(t => t.url);
- } else {
- return null;
- }
- }
- },
-
- mounted() {
- // Get replies
- if (!this.compact) {
- (this as any).api('notes/replies', {
- noteId: this.p.id,
- limit: 8
- }).then(replies => {
- this.replies = replies;
- });
- }
-
- // Draw map
- if (this.p.geo) {
- const shouldShowMap = (this as any).os.isSignedIn ? (this as any).os.i.account.clientSettings.showMaps : true;
- if (shouldShowMap) {
- (this as any).os.getGoogleMaps().then(maps => {
- const uluru = new maps.LatLng(this.p.geo.coordinates[1], this.p.geo.coordinates[0]);
- const map = new maps.Map(this.$refs.map, {
- center: uluru,
- zoom: 15
- });
- new maps.Marker({
- position: uluru,
- map: map
- });
- });
- }
- }
- },
-
- methods: {
- fetchContext() {
- this.contextFetching = true;
-
- // Fetch context
- (this as any).api('notes/context', {
- noteId: this.p.replyId
- }).then(context => {
- this.contextFetching = false;
- this.context = context.reverse();
- });
- },
- 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,
- note: this.p,
- compact: true
- });
- },
- menu() {
- (this as any).os.new(MkNoteMenu, {
- source: this.$refs.menuButton,
- note: this.p,
- compact: true
- });
- }
- }
-});
-</script>
-
-<style lang="stylus" scoped>
-@import '~const.styl'
-
-.mk-note-detail
- overflow hidden
- margin 0 auto
- padding 0
- width 100%
- text-align left
- background #fff
- border-radius 8px
- box-shadow 0 0 0 1px rgba(0, 0, 0, 0.2)
-
- > .fetching
- padding 64px 0
-
- > .more
- display block
- margin 0
- padding 10px 0
- width 100%
- font-size 1em
- text-align center
- color #999
- cursor pointer
- background #fafafa
- outline none
- border none
- border-bottom solid 1px #eef0f2
- border-radius 6px 6px 0 0
- box-shadow none
-
- &:hover
- background #f6f6f6
-
- &:active
- background #f0f0f0
-
- &:disabled
- color #ccc
-
- > .context
- > *
- border-bottom 1px solid #eef0f2
-
- > .renote
- color #9dbb00
- background linear-gradient(to bottom, #edfde2 0%, #fff 100%)
-
- > p
- margin 0
- padding 16px 32px
-
- .avatar-anchor
- display inline-block
-
- .avatar
- vertical-align bottom
- min-width 28px
- min-height 28px
- max-width 28px
- max-height 28px
- margin 0 8px 0 0
- border-radius 6px
-
- [data-fa]
- margin-right 4px
-
- .name
- font-weight bold
-
- & + article
- padding-top 8px
-
- > .reply-to
- border-bottom 1px solid #eef0f2
-
- > article
- padding 14px 16px 9px 16px
-
- @media (min-width 500px)
- padding 28px 32px 18px 32px
-
- &:after
- content ""
- display block
- clear both
-
- &:hover
- > .main > footer > button
- color #888
-
- > header
- display flex
- line-height 1.1
-
- > .avatar-anchor
- display block
- padding 0 .5em 0 0
-
- > .avatar
- display block
- width 54px
- height 54px
- margin 0
- border-radius 8px
- vertical-align bottom
-
- @media (min-width 500px)
- width 60px
- height 60px
-
- > div
-
- > .name
- display inline-block
- margin .4em 0
- color #777
- font-size 16px
- font-weight bold
- text-align left
- text-decoration none
-
- &:hover
- text-decoration underline
-
- > .username
- display block
- text-align left
- margin 0
- color #ccc
-
- > .body
- padding 8px 0
-
- > .renote
- margin 8px 0
-
- > .mk-note-preview
- padding 16px
- border dashed 1px #c0dac6
- border-radius 8px
-
- > .location
- margin 4px 0
- font-size 12px
- color #ccc
-
- > .map
- width 100%
- height 200px
-
- &:empty
- display none
-
- > .mk-url-preview
- margin-top 8px
-
- > .media
- > img
- display block
- max-width 100%
-
- > .tags
- margin 4px 0 0 0
-
- > *
- display inline-block
- margin 0 8px 0 0
- padding 2px 8px 2px 16px
- font-size 90%
- color #8d969e
- background #edf0f3
- border-radius 4px
-
- &:before
- content ""
- display block
- position absolute
- top 0
- bottom 0
- left 4px
- width 8px
- height 8px
- margin auto 0
- background #fff
- border-radius 100%
-
- > .time
- font-size 16px
- color #c0c0c0
-
- > footer
- font-size 1.2em
-
- > button
- margin 0
- padding 8px
- background transparent
- border none
- box-shadow none
- font-size 1em
- color #ddd
- cursor pointer
-
- &:not(:last-child)
- margin-right 28px
-
- &:hover
- color #666
-
- > .count
- display inline
- margin 0 0 0 8px
- color #999
-
- &.reacted
- color $theme-color
-
- > .replies
- > *
- border-top 1px solid #eef0f2
-
-</style>
-
-<style lang="stylus" module>
-.text
- display block
- margin 0
- padding 0
- overflow-wrap break-word
- font-size 16px
- color #717171
-
- @media (min-width 500px)
- font-size 24px
-
-</style>
diff --git a/src/client/app/mobile/views/components/post-form.vue b/src/client/app/mobile/views/components/post-form.vue
index 6fcbbb47e8..70be6db7b2 100644
--- a/src/client/app/mobile/views/components/post-form.vue
+++ b/src/client/app/mobile/views/components/post-form.vue
@@ -111,7 +111,7 @@ export default Vue.extend({
},
post() {
this.posting = true;
- const viaMobile = (this as any).os.i.account.clientSettings.disableViaMobile !== true;
+ const viaMobile = (this as any).os.i.clientSettings.disableViaMobile !== true;
(this as any).api('notes/create', {
text: this.text == '' ? undefined : this.text,
mediaIds: this.files.length > 0 ? this.files.map(f => f.id) : undefined,
diff --git a/src/client/app/mobile/views/components/post.vue b/src/client/app/mobile/views/components/post.vue
deleted file mode 100644
index 4b33c6f071..0000000000
--- a/src/client/app/mobile/views/components/post.vue
+++ /dev/null
@@ -1,540 +0,0 @@
-<template>
-<div class="note" :class="{ renote: isRenote }">
- <div class="reply-to" v-if="p.reply">
- <x-sub :note="p.reply"/>
- </div>
- <div class="renote" v-if="isRenote">
- <p>
- <router-link class="avatar-anchor" :to="`/@${acct}`">
- <img class="avatar" :src="`${note.user.avatarUrl}?thumbnail&size=64`" alt="avatar"/>
- </router-link>
- %fa:retweet%
- <span>{{ '%i18n:mobile.tags.mk-timeline-note.reposted-by%'.substr(0, '%i18n:mobile.tags.mk-timeline-note.reposted-by%'.indexOf('{')) }}</span>
- <router-link class="name" :to="`/@${acct}`">{{ name }}</router-link>
- <span>{{ '%i18n:mobile.tags.mk-timeline-note.reposted-by%'.substr('%i18n:mobile.tags.mk-timeline-note.reposted-by%'.indexOf('}') + 1) }}</span>
- </p>
- <mk-time :time="note.createdAt"/>
- </div>
- <article>
- <router-link class="avatar-anchor" :to="`/@${pAcct}`">
- <img class="avatar" :src="`${p.user.avatarUrl}?thumbnail&size=96`" alt="avatar"/>
- </router-link>
- <div class="main">
- <header>
- <router-link class="name" :to="`/@${pAcct}`">{{ pName }}</router-link>
- <span class="is-bot" v-if="p.user.host === null && p.user.account.isBot">bot</span>
- <span class="username">@{{ pAcct }}</span>
- <div class="info">
- <span class="mobile" v-if="p.viaMobile">%fa:mobile-alt%</span>
- <router-link class="created-at" :to="url">
- <mk-time :time="p.createdAt"/>
- </router-link>
- </div>
- </header>
- <div class="body">
- <p class="channel" v-if="p.channel != null"><a target="_blank">{{ p.channel.title }}</a>:</p>
- <div class="text">
- <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"/>
- <a class="rp" v-if="p.renote != null">RP:</a>
- </div>
- <div class="media" v-if="p.media.length > 0">
- <mk-media-list :media-list="p.media"/>
- </div>
- <mk-poll v-if="p.poll" :note="p" ref="pollViewer"/>
- <div class="tags" v-if="p.tags && p.tags.length > 0">
- <router-link v-for="tag in p.tags" :key="tag" :to="`/search?q=#${tag}`">{{ tag }}</router-link>
- </div>
- <mk-url-preview v-for="url in urls" :url="url" :key="url"/>
- <a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% 位置情報</a>
- <div class="map" v-if="p.geo" ref="map"></div>
- <span class="app" v-if="p.app">via <b>{{ p.app.name }}</b></span>
- <div class="renote" v-if="p.renote">
- <mk-note-preview :note="p.renote"/>
- </div>
- </div>
- <footer>
- <mk-reactions-viewer :note="p" ref="reactionsViewer"/>
- <button @click="reply">
- %fa:reply%<p class="count" v-if="p.repliesCount > 0">{{ p.repliesCount }}</p>
- </button>
- <button @click="renote" title="Renote">
- %fa:retweet%<p class="count" v-if="p.renoteCount > 0">{{ p.renoteCount }}</p>
- </button>
- <button :class="{ reacted: p.myReaction != null }" @click="react" ref="reactButton">
- %fa:plus%<p class="count" v-if="p.reactions_count > 0">{{ p.reactions_count }}</p>
- </button>
- <button class="menu" @click="menu" ref="menuButton">
- %fa:ellipsis-h%
- </button>
- </footer>
- </div>
- </article>
-</div>
-</template>
-
-<script lang="ts">
-import Vue from 'vue';
-import getAcct from '../../../../../acct/render';
-import getUserName from '../../../../../renderers/get-user-name';
-import parse from '../../../../../text/parse';
-
-import MkNoteMenu from '../../../common/views/components/note-menu.vue';
-import MkReactionPicker from '../../../common/views/components/reaction-picker.vue';
-import XSub from './note.sub.vue';
-
-export default Vue.extend({
- components: {
- XSub
- },
-
- props: ['note'],
-
- data() {
- return {
- connection: null,
- connectionId: null
- };
- },
-
- computed: {
- acct(): string {
- return getAcct(this.note.user);
- },
- name(): string {
- return getUserName(this.note.user);
- },
- pAcct(): string {
- return getAcct(this.p.user);
- },
- pName(): string {
- return getUserName(this.p.user);
- },
- isRenote(): boolean {
- return (this.note.renote &&
- this.note.text == null &&
- this.note.mediaIds == null &&
- 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)
- .map(key => this.p.reactionCounts[key])
- .reduce((a, b) => a + b)
- : 0;
- },
- url(): string {
- return `/@${this.pAcct}/${this.p.id}`;
- },
- urls(): string[] {
- if (this.p.text) {
- const ast = parse(this.p.text);
- return ast
- .filter(t => (t.type == 'url' || t.type == 'link') && !t.silent)
- .map(t => t.url);
- } else {
- return null;
- }
- }
- },
-
- created() {
- if ((this as any).os.isSignedIn) {
- this.connection = (this as any).os.stream.getConnection();
- this.connectionId = (this as any).os.stream.use();
- }
- },
-
- mounted() {
- this.capture(true);
-
- if ((this as any).os.isSignedIn) {
- this.connection.on('_connected_', this.onStreamConnected);
- }
-
- // Draw map
- if (this.p.geo) {
- const shouldShowMap = (this as any).os.isSignedIn ? (this as any).os.i.account.clientSettings.showMaps : true;
- if (shouldShowMap) {
- (this as any).os.getGoogleMaps().then(maps => {
- const uluru = new maps.LatLng(this.p.geo.coordinates[1], this.p.geo.coordinates[0]);
- const map = new maps.Map(this.$refs.map, {
- center: uluru,
- zoom: 15
- });
- new maps.Marker({
- position: uluru,
- map: map
- });
- });
- }
- }
- },
-
- beforeDestroy() {
- this.decapture(true);
-
- if ((this as any).os.isSignedIn) {
- this.connection.off('_connected_', this.onStreamConnected);
- (this as any).os.stream.dispose(this.connectionId);
- }
- },
-
- methods: {
- capture(withHandler = false) {
- if ((this as any).os.isSignedIn) {
- this.connection.send({
- type: 'capture',
- id: this.p.id
- });
- if (withHandler) this.connection.on('note-updated', this.onStreamNoteUpdated);
- }
- },
- decapture(withHandler = false) {
- if ((this as any).os.isSignedIn) {
- this.connection.send({
- type: 'decapture',
- id: this.p.id
- });
- if (withHandler) this.connection.off('note-updated', this.onStreamNoteUpdated);
- }
- },
- onStreamConnected() {
- this.capture();
- },
- onStreamNoteUpdated(data) {
- const note = data.note;
- if (note.id == this.note.id) {
- this.$emit('update:note', note);
- } else if (note.id == this.note.renoteId) {
- 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,
- note: this.p,
- compact: true
- });
- },
- menu() {
- (this as any).os.new(MkNoteMenu, {
- source: this.$refs.menuButton,
- note: this.p,
- compact: true
- });
- }
- }
-});
-</script>
-
-<style lang="stylus" scoped>
-@import '~const.styl'
-
-.note
- font-size 12px
- border-bottom solid 1px #eaeaea
-
- &:first-child
- border-radius 8px 8px 0 0
-
- > .renote
- border-radius 8px 8px 0 0
-
- &:last-of-type
- border-bottom none
-
- @media (min-width 350px)
- font-size 14px
-
- @media (min-width 500px)
- font-size 16px
-
- > .renote
- color #9dbb00
- background linear-gradient(to bottom, #edfde2 0%, #fff 100%)
-
- > p
- margin 0
- padding 8px 16px
- line-height 28px
-
- @media (min-width 500px)
- padding 16px
-
- .avatar-anchor
- display inline-block
-
- .avatar
- vertical-align bottom
- width 28px
- height 28px
- margin 0 8px 0 0
- border-radius 6px
-
- [data-fa]
- margin-right 4px
-
- .name
- font-weight bold
-
- > .mk-time
- position absolute
- top 8px
- right 16px
- font-size 0.9em
- line-height 28px
-
- @media (min-width 500px)
- top 16px
-
- & + article
- padding-top 8px
-
- > .reply-to
- background rgba(0, 0, 0, 0.0125)
-
- > .mk-note-preview
- background transparent
-
- > article
- padding 14px 16px 9px 16px
-
- &:after
- content ""
- display block
- clear both
-
- > .avatar-anchor
- display block
- float left
- margin 0 10px 8px 0
- position -webkit-sticky
- position sticky
- top 62px
-
- @media (min-width 500px)
- margin-right 16px
-
- > .avatar
- display block
- width 48px
- height 48px
- margin 0
- border-radius 6px
- vertical-align bottom
-
- @media (min-width 500px)
- width 58px
- height 58px
- border-radius 8px
-
- > .main
- float left
- width calc(100% - 58px)
-
- @media (min-width 500px)
- width calc(100% - 74px)
-
- > header
- display flex
- align-items center
- white-space nowrap
-
- @media (min-width 500px)
- margin-bottom 2px
-
- > .name
- display block
- margin 0 0.5em 0 0
- padding 0
- overflow hidden
- color #627079
- font-size 1em
- font-weight bold
- text-decoration none
- text-overflow ellipsis
-
- &:hover
- text-decoration underline
-
- > .is-bot
- margin 0 0.5em 0 0
- padding 1px 6px
- font-size 12px
- color #aaa
- border solid 1px #ddd
- border-radius 3px
-
- > .username
- margin 0 0.5em 0 0
- color #ccc
-
- > .info
- margin-left auto
- font-size 0.9em
-
- > .mobile
- margin-right 6px
- color #c0c0c0
-
- > .created-at
- color #c0c0c0
-
- > .body
-
- > .text
- display block
- margin 0
- padding 0
- overflow-wrap break-word
- font-size 1.1em
- color #717171
-
- >>> .quote
- margin 8px
- padding 6px 12px
- color #aaa
- border-left solid 3px #eee
-
- > .reply
- margin-right 8px
- color #717171
-
- > .rp
- margin-left 4px
- font-style oblique
- color #a0bf46
-
- [data-is-me]:after
- content "you"
- padding 0 4px
- margin-left 4px
- font-size 80%
- color $theme-color-foreground
- background $theme-color
- border-radius 4px
-
- .mk-url-preview
- margin-top 8px
-
- > .channel
- margin 0
-
- > .tags
- margin 4px 0 0 0
-
- > *
- display inline-block
- margin 0 8px 0 0
- padding 2px 8px 2px 16px
- font-size 90%
- color #8d969e
- background #edf0f3
- border-radius 4px
-
- &:before
- content ""
- display block
- position absolute
- top 0
- bottom 0
- left 4px
- width 8px
- height 8px
- margin auto 0
- background #fff
- border-radius 100%
-
- > .media
- > img
- display block
- max-width 100%
-
- > .location
- margin 4px 0
- font-size 12px
- color #ccc
-
- > .map
- width 100%
- height 200px
-
- &:empty
- display none
-
- > .app
- font-size 12px
- color #ccc
-
- > .mk-poll
- font-size 80%
-
- > .renote
- margin 8px 0
-
- > .mk-note-preview
- padding 16px
- border dashed 1px #c0dac6
- border-radius 8px
-
- > footer
- > button
- margin 0
- padding 8px
- background transparent
- border none
- box-shadow none
- font-size 1em
- color #ddd
- cursor pointer
-
- &:not(:last-child)
- margin-right 28px
-
- &:hover
- color #666
-
- > .count
- display inline
- margin 0 0 0 8px
- color #999
-
- &.reacted
- color $theme-color
-
- &.menu
- @media (max-width 350px)
- display none
-
-</style>
-
-<style lang="stylus" module>
-.text
- code
- padding 4px 8px
- margin 0 0.5em
- font-size 80%
- color #525252
- background #f8f8f8
- border-radius 2px
-
- pre > code
- padding 16px
- margin 0
-</style>
diff --git a/src/client/app/mobile/views/components/ui.header.vue b/src/client/app/mobile/views/components/ui.header.vue
index fd4f31fd98..f664341cdd 100644
--- a/src/client/app/mobile/views/components/ui.header.vue
+++ b/src/client/app/mobile/views/components/ui.header.vue
@@ -63,9 +63,9 @@ export default Vue.extend({
}
});
- const ago = (new Date().getTime() - new Date((this as any).os.i.account.lastUsedAt).getTime()) / 1000
+ const ago = (new Date().getTime() - new Date((this as any).os.i.lastUsedAt).getTime()) / 1000
const isHisasiburi = ago >= 3600;
- (this as any).os.i.account.lastUsedAt = new Date();
+ (this as any).os.i.lastUsedAt = new Date();
if (isHisasiburi) {
(this.$refs.welcomeback as any).style.display = 'block';
(this.$refs.main as any).style.overflow = 'hidden';
diff --git a/src/client/app/mobile/views/pages/home.vue b/src/client/app/mobile/views/pages/home.vue
index ab61166cf3..3de2ba1c3e 100644
--- a/src/client/app/mobile/views/pages/home.vue
+++ b/src/client/app/mobile/views/pages/home.vue
@@ -82,8 +82,8 @@ export default Vue.extend({
};
},
created() {
- if ((this as any).os.i.account.clientSettings.mobileHome == null) {
- Vue.set((this as any).os.i.account.clientSettings, 'mobileHome', [{
+ if ((this as any).os.i.clientSettings.mobileHome == null) {
+ Vue.set((this as any).os.i.clientSettings, 'mobileHome', [{
name: 'calendar',
id: 'a', data: {}
}, {
@@ -105,14 +105,14 @@ export default Vue.extend({
name: 'version',
id: 'g', data: {}
}]);
- this.widgets = (this as any).os.i.account.clientSettings.mobileHome;
+ this.widgets = (this as any).os.i.clientSettings.mobileHome;
this.saveHome();
} else {
- this.widgets = (this as any).os.i.account.clientSettings.mobileHome;
+ this.widgets = (this as any).os.i.clientSettings.mobileHome;
}
- this.$watch('os.i.account.clientSettings', i => {
- this.widgets = (this as any).os.i.account.clientSettings.mobileHome;
+ this.$watch('os.i.clientSettings', i => {
+ this.widgets = (this as any).os.i.clientSettings.mobileHome;
}, {
deep: true
});
@@ -157,15 +157,15 @@ export default Vue.extend({
},
onHomeUpdated(data) {
if (data.home) {
- (this as any).os.i.account.clientSettings.mobileHome = data.home;
+ (this as any).os.i.clientSettings.mobileHome = data.home;
this.widgets = data.home;
} else {
- const w = (this as any).os.i.account.clientSettings.mobileHome.find(w => w.id == data.id);
+ const w = (this as any).os.i.clientSettings.mobileHome.find(w => w.id == data.id);
if (w != null) {
w.data = data.data;
this.$refs[w.id][0].preventSave = true;
this.$refs[w.id][0].props = w.data;
- this.widgets = (this as any).os.i.account.clientSettings.mobileHome;
+ this.widgets = (this as any).os.i.clientSettings.mobileHome;
}
}
},
@@ -194,7 +194,7 @@ export default Vue.extend({
this.saveHome();
},
saveHome() {
- (this as any).os.i.account.clientSettings.mobileHome = this.widgets;
+ (this as any).os.i.clientSettings.mobileHome = this.widgets;
(this as any).api('i/update_mobile_home', {
home: this.widgets
});
diff --git a/src/client/app/mobile/views/pages/profile-setting.vue b/src/client/app/mobile/views/pages/profile-setting.vue
index 4a560c0272..7f0ff5aad7 100644
--- a/src/client/app/mobile/views/pages/profile-setting.vue
+++ b/src/client/app/mobile/views/pages/profile-setting.vue
@@ -53,9 +53,9 @@ export default Vue.extend({
},
created() {
this.name = (this as any).os.i.name || '';
- this.location = (this as any).os.i.account.profile.location;
+ this.location = (this as any).os.i.profile.location;
this.description = (this as any).os.i.description;
- this.birthday = (this as any).os.i.account.profile.birthday;
+ this.birthday = (this as any).os.i.profile.birthday;
},
mounted() {
document.title = 'Misskey | %i18n:mobile.tags.mk-profile-setting-page.title%';
diff --git a/src/client/app/mobile/views/pages/user.vue b/src/client/app/mobile/views/pages/user.vue
index 08fa4e2774..f33f209db1 100644
--- a/src/client/app/mobile/views/pages/user.vue
+++ b/src/client/app/mobile/views/pages/user.vue
@@ -18,11 +18,11 @@
</div>
<div class="description">{{ user.description }}</div>
<div class="info">
- <p class="location" v-if="user.host === null && user.account.profile.location">
- %fa:map-marker%{{ user.account.profile.location }}
+ <p class="location" v-if="user.host === null && user.profile.location">
+ %fa:map-marker%{{ user.profile.location }}
</p>
- <p class="birthday" v-if="user.host === null && user.account.profile.birthday">
- %fa:birthday-cake%{{ user.account.profile.birthday.replace('-', '年').replace('-', '月') + '日' }} ({{ age }}歳)
+ <p class="birthday" v-if="user.host === null && user.profile.birthday">
+ %fa:birthday-cake%{{ user.profile.birthday.replace('-', '年').replace('-', '月') + '日' }} ({{ age }}歳)
</p>
</div>
<div class="status">
@@ -81,7 +81,7 @@ export default Vue.extend({
return this.getAcct(this.user);
},
age(): number {
- return age(this.user.account.profile.birthday);
+ return age(this.user.profile.birthday);
},
name() {
return getUserName(this.user);
diff --git a/src/client/app/mobile/views/pages/user/home.vue b/src/client/app/mobile/views/pages/user/home.vue
index 2554084969..c0cd9b8da8 100644
--- a/src/client/app/mobile/views/pages/user/home.vue
+++ b/src/client/app/mobile/views/pages/user/home.vue
@@ -31,7 +31,7 @@
<x-followers-you-know :user="user"/>
</div>
</section>
- <p v-if="user.host === null">%i18n:mobile.tags.mk-user-overview.last-used-at%: <b><mk-time :time="user.account.lastUsedAt"/></b></p>
+ <p v-if="user.host === null">%i18n:mobile.tags.mk-user-overview.last-used-at%: <b><mk-time :time="user.lastUsedAt"/></b></p>
</div>
</template>
diff --git a/src/client/app/mobile/views/pages/welcome.vue b/src/client/app/mobile/views/pages/welcome.vue
index 17cdf93065..27baf8bee4 100644
--- a/src/client/app/mobile/views/pages/welcome.vue
+++ b/src/client/app/mobile/views/pages/welcome.vue
@@ -8,7 +8,7 @@
<form @submit.prevent="onSubmit">
<input v-model="username" type="text" pattern="^[a-zA-Z0-9_]+$" placeholder="ユーザー名" autofocus required @change="onUsernameChange"/>
<input v-model="password" type="password" placeholder="パスワード" required/>
- <input v-if="user && user.account.twoFactorEnabled" v-model="token" type="number" placeholder="トークン" required/>
+ <input v-if="user && user.twoFactorEnabled" v-model="token" type="number" placeholder="トークン" required/>
<button type="submit" :disabled="signing">{{ signing ? 'ログインしています' : 'ログイン' }}</button>
</form>
<div>
@@ -70,7 +70,7 @@ export default Vue.extend({
(this as any).api('signin', {
username: this.username,
password: this.password,
- token: this.user && this.user.account.twoFactorEnabled ? this.token : undefined
+ token: this.user && this.user.twoFactorEnabled ? this.token : undefined
}).then(() => {
location.reload();
}).catch(() => {