aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/App.js8
-rw-r--r--src/App.scss14
-rw-r--r--src/App.vue3
-rw-r--r--src/components/conversation/conversation.js19
-rw-r--r--src/components/settings/settings.js3
-rw-r--r--src/components/settings/settings.vue2
-rw-r--r--src/components/status/status.js2
-rw-r--r--src/components/status/status.vue2
-rw-r--r--src/components/user_profile/user_profile.js2
-rw-r--r--src/components/user_settings/user_settings.vue2
-rw-r--r--src/i18n/es.json1
-rw-r--r--src/i18n/ja.json28
-rw-r--r--src/modules/statuses.js2
-rw-r--r--src/services/api/api.service.js2
14 files changed, 63 insertions, 27 deletions
diff --git a/src/App.js b/src/App.js
index 200254f3..214e0f48 100644
--- a/src/App.js
+++ b/src/App.js
@@ -66,12 +66,16 @@ export default {
})
},
logo () { return this.$store.state.instance.logo },
- style () {
+ bgStyle () {
return {
- '--body-background-image': `url(${this.background})`,
'background-image': `url(${this.background})`
}
},
+ bgAppStyle () {
+ return {
+ '--body-background-image': `url(${this.background})`
+ }
+ },
sitename () { return this.$store.state.instance.name },
chat () { return this.$store.state.chat.channel.state === 'joined' },
suggestionsEnabled () { return this.$store.state.instance.suggestionsEnabled },
diff --git a/src/App.scss b/src/App.scss
index a43b84a7..e7784329 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -1,15 +1,21 @@
@import './_variables.scss';
#app {
- background-size: cover;
- background-attachment: fixed;
- background-repeat: no-repeat;
- background-position: 0 50px;
min-height: 100vh;
max-width: 100%;
overflow: hidden;
}
+.app-bg-wrapper {
+ position: fixed;
+ z-index: -1;
+ height: 100%;
+ width: 100%;
+ background-size: cover;
+ background-repeat: no-repeat;
+ background-position: 0 50%;
+}
+
i {
user-select: none;
}
diff --git a/src/App.vue b/src/App.vue
index 7541928f..acbbeb75 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,5 +1,6 @@
<template>
- <div id="app" v-bind:style="style">
+ <div id="app" v-bind:style="bgAppStyle">
+ <div class="app-bg-wrapper" v-bind:style="bgStyle"></div>
<nav class='nav-bar container' @click="scrollToTop()" id="nav">
<div class='logo' :style='logoBgStyle'>
<div class='mask' :style='logoMaskStyle'></div>
diff --git a/src/components/conversation/conversation.js b/src/components/conversation/conversation.js
index c18781de..48b8aaaa 100644
--- a/src/components/conversation/conversation.js
+++ b/src/components/conversation/conversation.js
@@ -9,9 +9,9 @@ const sortById = (a, b) => {
if (isSeqA && isSeqB) {
return seqA < seqB ? -1 : 1
} else if (isSeqA && !isSeqB) {
- return 1
- } else if (!isSeqA && isSeqB) {
return -1
+ } else if (!isSeqA && isSeqB) {
+ return 1
} else {
return a.id < b.id ? -1 : 1
}
@@ -36,6 +36,13 @@ const conversation = {
status () {
return this.statusoid
},
+ statusId () {
+ if (this.statusoid.retweeted_status) {
+ return this.statusoid.retweeted_status.id
+ } else {
+ return this.statusoid.id
+ }
+ },
conversation () {
if (!this.status) {
return []
@@ -79,7 +86,7 @@ const conversation = {
const conversationId = this.status.statusnet_conversation_id
this.$store.state.api.backendInteractor.fetchConversation({id: conversationId})
.then((statuses) => this.$store.dispatch('addNewStatuses', { statuses }))
- .then(() => this.setHighlight(this.statusoid.id))
+ .then(() => this.setHighlight(this.statusId))
} else {
const id = this.$route.params.id
this.$store.state.api.backendInteractor.fetchStatus({id})
@@ -91,11 +98,7 @@ const conversation = {
return this.replies[id] || []
},
focused (id) {
- if (this.statusoid.retweeted_status) {
- return (id === this.statusoid.retweeted_status.id)
- } else {
- return (id === this.statusoid.id)
- }
+ return id === this.statusId
},
setHighlight (id) {
this.highlight = id
diff --git a/src/components/settings/settings.js b/src/components/settings/settings.js
index 534a9839..23c1acdb 100644
--- a/src/components/settings/settings.js
+++ b/src/components/settings/settings.js
@@ -91,7 +91,8 @@ const settings = {
},
currentSaveStateNotice () {
return this.$store.state.interface.settings.currentSaveStateNotice
- }
+ },
+ instanceSpecificPanelPresent () { return this.$store.state.instance.showInstanceSpecificPanel }
},
watch: {
hideAttachmentsLocal (value) {
diff --git a/src/components/settings/settings.vue b/src/components/settings/settings.vue
index dfb2e49d..e5f8fefb 100644
--- a/src/components/settings/settings.vue
+++ b/src/components/settings/settings.vue
@@ -27,7 +27,7 @@
<li>
<interface-language-switcher />
</li>
- <li>
+ <li v-if="instanceSpecificPanelPresent">
<input type="checkbox" id="hideISP" v-model="hideISPLocal">
<label for="hideISP">{{$t('settings.hide_isp')}}</label>
</li>
diff --git a/src/components/status/status.js b/src/components/status/status.js
index 06e4fe93..0273a5be 100644
--- a/src/components/status/status.js
+++ b/src/components/status/status.js
@@ -298,8 +298,10 @@ const Status = {
if (tag) {
const link = this.generateTagLink(tag)
this.$router.push(link)
+ return
}
}
+ window.open(target.href, '_blank')
}
},
toggleReplying () {
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index ef4ee843..3fc5b486 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -438,6 +438,8 @@
.user-name {
font-weight: bold;
+ overflow: hidden;
+ text-overflow: ellipsis;
img {
width: 14px;
diff --git a/src/components/user_profile/user_profile.js b/src/components/user_profile/user_profile.js
index a22b8722..37179ce1 100644
--- a/src/components/user_profile/user_profile.js
+++ b/src/components/user_profile/user_profile.js
@@ -16,7 +16,7 @@ const UserProfile = {
}
},
destroyed () {
- this.cleanUp(this.userId)
+ this.cleanUp()
},
computed: {
timeline () {
diff --git a/src/components/user_settings/user_settings.vue b/src/components/user_settings/user_settings.vue
index 134f70ef..d2381da2 100644
--- a/src/components/user_settings/user_settings.vue
+++ b/src/components/user_settings/user_settings.vue
@@ -178,7 +178,7 @@
}
.banner {
- max-width: 400px;
+ max-width: 100%;
}
.uploading {
diff --git a/src/i18n/es.json b/src/i18n/es.json
index 29c8aec4..d14e7a31 100644
--- a/src/i18n/es.json
+++ b/src/i18n/es.json
@@ -140,6 +140,7 @@
"use_one_click_nsfw": "Abrir los adjuntos NSFW con un solo click.",
"hide_post_stats": "Ocultar las estadísticas de las entradas (p.ej. el número de favoritos)",
"hide_user_stats": "Ocultar las estadísticas del usuario (p.ej. el número de seguidores)",
+ "hide_filtered_statuses": "Ocultar estados filtrados",
"import_followers_from_a_csv_file": "Importar personas que tú sigues a partir de un archivo csv",
"import_theme": "Importar tema",
"inputRadius": "Campos de entrada",
diff --git a/src/i18n/ja.json b/src/i18n/ja.json
index afce03a4..7849aa20 100644
--- a/src/i18n/ja.json
+++ b/src/i18n/ja.json
@@ -17,7 +17,9 @@
},
"general": {
"apply": "てきよう",
- "submit": "そうしん"
+ "submit": "そうしん",
+ "more": "つづき",
+ "generic_error": "エラーになりました"
},
"login": {
"login": "ログイン",
@@ -26,7 +28,8 @@
"password": "パスワード",
"placeholder": "れい: lain",
"register": "はじめる",
- "username": "ユーザーめい"
+ "username": "ユーザーめい",
+ "hint": "はなしあいにくわわるには、ログインしてください"
},
"nav": {
"about": "これはなに?",
@@ -49,7 +52,8 @@
"load_older": "ふるいつうちをみる",
"notifications": "つうち",
"read": "よんだ!",
- "repeated_you": "あなたのステータスがリピートされました"
+ "repeated_you": "あなたのステータスがリピートされました",
+ "no_more_notifications": "つうちはありません"
},
"post_status": {
"new_status": "とうこうする",
@@ -117,6 +121,7 @@
"delete_account_description": "あなたのアカウントとメッセージが、きえます。",
"delete_account_error": "アカウントをけすことが、できなかったかもしれません。インスタンスのかんりしゃに、れんらくしてください。",
"delete_account_instructions": "ほんとうにアカウントをけしてもいいなら、パスワードをかいてください。",
+ "avatar_size_instruction": "アバターのおおきさは、150×150ピクセルか、それよりもおおきくするといいです。",
"export_theme": "セーブ",
"filtering": "フィルタリング",
"filtering_explanation": "これらのことばをふくむすべてのものがミュートされます。1ぎょうに1つのことばをかいてください。",
@@ -132,8 +137,10 @@
"hide_attachments_in_tl": "タイムラインのファイルをかくす",
"hide_isp": "インスタンススペシフィックパネルをかくす",
"preload_images": "がぞうをさきよみする",
+ "use_one_click_nsfw": "NSFWなファイルを1クリックでひらく",
"hide_post_stats": "とうこうのとうけいをかくす (れい: おきにいりのかず)",
"hide_user_stats": "ユーザーのとうけいをかくす (れい: フォロワーのかず)",
+ "hide_filtered_statuses": "フィルターされたとうこうをかくす",
"import_followers_from_a_csv_file": "CSVファイルからフォローをインポートする",
"import_theme": "ロード",
"inputRadius": "インプットフィールド",
@@ -148,6 +155,8 @@
"lock_account_description": "あなたがみとめたひとだけ、あなたのアカウントをフォローできる",
"loop_video": "ビデオをくりかえす",
"loop_video_silent_only": "おとのないビデオだけくりかえす",
+ "play_videos_in_modal": "ビデオをメディアビューアーでみる",
+ "use_contain_fit": "がぞうのサムネイルを、きりぬかない",
"name": "なまえ",
"name_bio": "なまえとプロフィール",
"new_password": "あたらしいパスワード",
@@ -157,8 +166,10 @@
"notification_visibility_mentions": "メンション",
"notification_visibility_repeats": "リピート",
"no_rich_text_description": "リッチテキストをつかわない",
- "hide_follows_description": "フォローしている人を表示しない",
- "hide_followers_description": "フォローしている人を表示しない",
+ "hide_follows_description": "フォローしているひとをみせない",
+ "hide_followers_description": "フォロワーをみせない",
+ "show_admin_badge": "アドミンのしるしをみる",
+ "show_moderator_badge": "モデレーターのしるしをみる",
"nsfw_clickthrough": "NSFWなファイルをかくす",
"panelRadius": "パネル",
"pause_on_unfocused": "タブにフォーカスがないときストリーミングをとめる",
@@ -185,6 +196,8 @@
"subject_line_email": "メールふう: \"re: サブジェクト\"",
"subject_line_mastodon": "マストドンふう: そのままコピー",
"subject_line_noop": "コピーしない",
+ "post_status_content_type": "とうこうのコンテントタイプ",
+ "status_content_type_plain": "プレーンテキスト",
"stop_gifs": "カーソルをかさねたとき、GIFをうごかす",
"streaming": "うえまでスクロールしたとき、じどうてきにストリーミングする",
"text": "もじ",
@@ -318,13 +331,15 @@
"no_retweet_hint": "とうこうを「フォロワーのみ」または「ダイレクト」にすると、リピートできなくなります",
"repeated": "リピート",
"show_new": "よみこみ",
- "up_to_date": "さいしん"
+ "up_to_date": "さいしん",
+ "no_more_statuses": "これでおわりです"
},
"user_card": {
"approve": "うけいれ",
"block": "ブロック",
"blocked": "ブロックしています!",
"deny": "おことわり",
+ "favorites": "おきにいり",
"follow": "フォロー",
"follow_sent": "リクエストを、おくりました!",
"follow_progress": "リクエストしています…",
@@ -335,6 +350,7 @@
"following": "フォローしています!",
"follows_you": "フォローされました!",
"its_you": "これはあなたです!",
+ "media": "メディア",
"mute": "ミュート",
"muted": "ミュートしています!",
"per_day": "/日",
diff --git a/src/modules/statuses.js b/src/modules/statuses.js
index 56619455..46117fd7 100644
--- a/src/modules/statuses.js
+++ b/src/modules/statuses.js
@@ -296,7 +296,7 @@ const addNewNotifications = (state, { dispatch, notifications, older, visibleNot
notifObj.image = action.attachments[0].url
}
- if (notification.fresh && !state.notifications.desktopNotificationSilence && visibleNotificationTypes.includes(notification.ntype)) {
+ if (!notification.seen && !state.notifications.desktopNotificationSilence && visibleNotificationTypes.includes(notification.type)) {
let notification = new window.Notification(title, notifObj)
// Chrome is known for not closing notifications automatically
// according to MDN, anyway.
diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js
index 92daa04e..13d31d91 100644
--- a/src/services/api/api.service.js
+++ b/src/services/api/api.service.js
@@ -258,7 +258,7 @@ const fetchFriends = ({id, page, credentials}) => {
}
const exportFriends = ({id, credentials}) => {
- let url = `${FRIENDS_URL}?user_id=${id}&export=true`
+ let url = `${FRIENDS_URL}?user_id=${id}&all=true`
return fetch(url, { headers: authHeaders(credentials) })
.then((data) => data.json())
.then((data) => data.map(parseUser))