aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHakaba Hitoyo <example@example.com>2018-02-04 08:36:10 +0900
committerHakaba Hitoyo <example@example.com>2018-02-04 08:36:10 +0900
commit013f11497fbc955bea6c182d64b512de2ee3bcdf (patch)
tree6979bab5ddc02f68992cf8e71b4612e3f2b02d12 /src
parent95cba854f389ebdee200d0df147e4c26ed4949a0 (diff)
parentd97e6777ba849c9802da1e566d2baa2e1d7bdf70 (diff)
slove-conflict
Diffstat (limited to 'src')
-rw-r--r--src/App.js2
-rw-r--r--src/components/favorite_button/favorite_button.js2
-rw-r--r--src/components/favorite_button/favorite_button.vue10
-rw-r--r--src/components/post_status_form/post_status_form.js9
-rw-r--r--src/components/post_status_form/post_status_form.vue5
-rw-r--r--src/components/retweet_button/retweet_button.js2
-rw-r--r--src/components/retweet_button/retweet_button.vue10
-rw-r--r--src/components/status/status.vue23
-rw-r--r--src/components/user_card_content/user_card_content.js5
-rw-r--r--src/components/user_card_content/user_card_content.vue20
-rw-r--r--src/components/user_settings/user_settings.vue2
-rw-r--r--src/i18n/messages.js23
-rw-r--r--src/main.js12
-rw-r--r--src/modules/chat.js2
14 files changed, 96 insertions, 31 deletions
diff --git a/src/App.js b/src/App.js
index 1c6f4fcc..4eabba8b 100644
--- a/src/App.js
+++ b/src/App.js
@@ -26,7 +26,7 @@ export default {
logoStyle () { return { 'background-image': `url(${this.$store.state.config.logo})` } },
style () { return { 'background-image': `url(${this.background})` } },
sitename () { return this.$store.state.config.name },
- chat () { return this.$store.state.chat.channel },
+ chat () { return this.$store.state.chat.channel.state === 'joined' },
showInstanceSpecificPanel () { return this.$store.state.config.showInstanceSpecificPanel}
},
methods: {
diff --git a/src/components/favorite_button/favorite_button.js b/src/components/favorite_button/favorite_button.js
index 466e9b84..1266be90 100644
--- a/src/components/favorite_button/favorite_button.js
+++ b/src/components/favorite_button/favorite_button.js
@@ -1,5 +1,5 @@
const FavoriteButton = {
- props: ['status'],
+ props: ['status', 'loggedIn'],
data () {
return {
animated: false
diff --git a/src/components/favorite_button/favorite_button.vue b/src/components/favorite_button/favorite_button.vue
index dcf28e35..65d368c7 100644
--- a/src/components/favorite_button/favorite_button.vue
+++ b/src/components/favorite_button/favorite_button.vue
@@ -1,6 +1,10 @@
<template>
- <div>
- <i :class='classes' class='favorite-button base09' @click.prevent='favorite()'/>
+ <div v-if="loggedIn">
+ <i :class='classes' class='favorite-button fav-active base09' @click.prevent='favorite()'/>
+ <span v-if='status.fave_num > 0'>{{status.fave_num}}</span>
+ </div>
+ <div v-else>
+ <i :class='classes' class='favorite-button base09'/>
<span v-if='status.fave_num > 0'>{{status.fave_num}}</span>
</div>
</template>
@@ -8,7 +12,7 @@
<script src="./favorite_button.js" ></script>
<style lang='scss'>
- .favorite-button {
+ .fav-active {
cursor: pointer;
animation-duration: 0.6s;
&:hover {
diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index acc97c86..1f63de25 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -64,14 +64,15 @@ const PostStatusForm = {
img: profile_image_url_original
}))
} else if (firstchar === ':') {
- const matchedEmoji = filter(this.emoji, (emoji) => emoji.shortcode.match(this.textAtCaret.slice(1)))
+ const matchedEmoji = filter(this.emoji.concat(this.customEmoji), (emoji) => emoji.shortcode.match(this.textAtCaret.slice(1)))
if (matchedEmoji.length <= 0) {
return false
}
- return map(take(matchedEmoji, 5), ({shortcode, image_url}) => ({
+ return map(take(matchedEmoji, 5), ({shortcode, image_url, utf}) => ({
// eslint-disable-next-line camelcase
screen_name: `:${shortcode}:`,
name: '',
+ utf: utf || '',
img: image_url
}))
} else {
@@ -90,6 +91,9 @@ const PostStatusForm = {
},
emoji () {
return this.$store.state.config.emoji || []
+ },
+ customEmoji () {
+ return this.$store.state.config.customEmoji || []
}
},
methods: {
@@ -104,6 +108,7 @@ const PostStatusForm = {
},
postStatus (newStatus) {
if (this.posting) { return }
+ if (this.submitDisabled) { return }
if (this.newStatus.status === '') {
if (this.newStatus.files.length > 0) {
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index bb2329f3..8e436428 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -6,8 +6,9 @@
</div>
<div style="position:relative;" v-if="candidates">
<div class="autocomplete-panel base05-background">
- <div v-for="candidate in candidates" @click="replace(candidate.screen_name + ' ')" class="autocomplete base02">
- <img :src="candidate.img"></img>
+ <div v-for="candidate in candidates" @click="replace(candidate.utf || (candidate.screen_name + ' '))" class="autocomplete base02">
+ <span v-if="candidate.img"><img :src="candidate.img"></img></span>
+ <span v-else>{{candidate.utf}}</span>
<span>
{{candidate.screen_name}}
<small class="base02">{{candidate.name}}</small>
diff --git a/src/components/retweet_button/retweet_button.js b/src/components/retweet_button/retweet_button.js
index 2280f315..4a43542d 100644
--- a/src/components/retweet_button/retweet_button.js
+++ b/src/components/retweet_button/retweet_button.js
@@ -1,5 +1,5 @@
const RetweetButton = {
- props: ['status'],
+ props: ['status', 'loggedIn'],
data () {
return {
animated: false
diff --git a/src/components/retweet_button/retweet_button.vue b/src/components/retweet_button/retweet_button.vue
index edbfef32..7a7ea763 100644
--- a/src/components/retweet_button/retweet_button.vue
+++ b/src/components/retweet_button/retweet_button.vue
@@ -1,6 +1,10 @@
<template>
- <div>
- <i :class='classes' class='icon-retweet base09' v-on:click.prevent='retweet()'></i>
+ <div v-if="loggedIn">
+ <i :class='classes' class='icon-retweet rt-active base09' v-on:click.prevent='retweet()'></i>
+ <span v-if='status.repeat_num > 0'>{{status.repeat_num}}</span>
+ </div>
+ <div v-else>
+ <i :class='classes' class='icon-retweet base09'></i>
<span v-if='status.repeat_num > 0'>{{status.repeat_num}}</span>
</div>
</template>
@@ -9,7 +13,7 @@
<style lang='scss'>
@import '../../_variables.scss';
- .icon-retweet {
+ .rt-active {
cursor: pointer;
animation-duration: 0.6s;
&:hover {
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index d6c8cdb3..f6afaa25 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -8,8 +8,8 @@
<i class="base09 icon-reply" :class="{'icon-reply-active': replying}"></i>
</a>
</div>
- <retweet-button :status=status></retweet-button>
- <favorite-button :status=status></favorite-button>
+ <retweet-button :loggedIn="loggedIn" :status=status></retweet-button>
+ <favorite-button :loggedIn="loggedIn" :status=status></favorite-button>
</div>
</div>
<post-status-form class="reply-body" :reply-to="status.id" :attentions="status.attentions" :repliedUser="status.user" v-on:posted="toggleReplying" v-if="replying"/>
@@ -105,17 +105,15 @@
</div>
</div>
- <div v-if="loggedIn">
- <div class='status-actions'>
- <div>
- <a href="#" v-on:click.prevent="toggleReplying">
- <i class="base09 icon-reply" :class="{'icon-reply-active': replying}"></i>
- </a>
- </div>
- <retweet-button :status=status></retweet-button>
- <favorite-button :status=status></favorite-button>
- <delete-button :status=status></delete-button>
+ <div class='status-actions'>
+ <div v-if="loggedIn">
+ <a href="#" v-on:click.prevent="toggleReplying">
+ <i class="base09 icon-reply" :class="{'icon-reply-active': replying}"></i>
+ </a>
</div>
+ <retweet-button :loggedIn="loggedIn" :status=status></retweet-button>
+ <favorite-button :loggedIn="loggedIn" :status=status></favorite-button>
+ <delete-button :status=status></delete-button>
</div>
</div>
</div>
@@ -248,6 +246,7 @@
img, video {
max-width: 100%;
max-height: 400px;
+ vertical-align: middle;
object-fit: contain;
}
diff --git a/src/components/user_card_content/user_card_content.js b/src/components/user_card_content/user_card_content.js
index 6e67a321..32d62ebb 100644
--- a/src/components/user_card_content/user_card_content.js
+++ b/src/components/user_card_content/user_card_content.js
@@ -22,6 +22,11 @@ export default {
isOtherUser () {
return this.user.id !== this.$store.state.users.currentUser.id
},
+ subscribeUrl () {
+ // eslint-disable-next-line no-undef
+ const serverUrl = new URL(this.user.statusnet_profile_url)
+ return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`
+ },
loggedIn () {
return this.$store.state.users.currentUser
},
diff --git a/src/components/user_card_content/user_card_content.vue b/src/components/user_card_content/user_card_content.vue
index 4c40c55f..ef000c94 100644
--- a/src/components/user_card_content/user_card_content.vue
+++ b/src/components/user_card_content/user_card_content.vue
@@ -46,6 +46,15 @@
</button>
</span>
</div>
+ <div class="remote-follow" v-if='!loggedIn && user.is_local'>
+ <form method="POST" :action='subscribeUrl'>
+ <input type="hidden" name="nickname" :value="user.screen_name">
+ <input type="hidden" name="profile" value="">
+ <button click="submit" class="remote-button base05 base02-background">
+ {{ $t('user_card.remote_follow') }}
+ </button>
+ </form>
+ </div>
<div class='block' v-if='isOtherUser && loggedIn'>
<span v-if='user.statusnet_blocking'>
<button @click="unblockUser" class="base04 base00-background pressed">
@@ -182,6 +191,11 @@
min-height: 28px;
}
+ .remote-follow {
+ max-width: 220px;
+ min-height: 28px;
+ }
+
.follow {
max-width: 220px;
min-height: 28px;
@@ -191,6 +205,12 @@
width: 92%;
height: 100%;
}
+
+ .remote-button {
+ height: 28px !important;
+ width: 92%;
+ }
+
.pressed {
border-bottom-color: rgba(255, 255, 255, 0.2);
border-top-color: rgba(0, 0, 0, 0.2);
diff --git a/src/components/user_settings/user_settings.vue b/src/components/user_settings/user_settings.vue
index da78cdc2..1ef52bbf 100644
--- a/src/components/user_settings/user_settings.vue
+++ b/src/components/user_settings/user_settings.vue
@@ -7,7 +7,7 @@
<div class="setting-item">
<h3>{{$t('settings.name_bio')}}</h3>
<p>{{$t('settings.name')}}</p>
- <input class='name-changer base03-border' id='username' v-model="newname" :value="user.screen_name"></input>
+ <input class='name-changer base03-border' id='username' v-model="newname"></input>
<p>{{$t('settings.bio')}}</p>
<textarea class="bio base03-border" v-model="newbio"></textarea>
<button :disabled='newname.length <= 0' class="btn btn-default base05 base02-background" @click="updateProfile">{{$t('general.submit')}}</button>
diff --git a/src/i18n/messages.js b/src/i18n/messages.js
index f0953a10..f3f1e2d4 100644
--- a/src/i18n/messages.js
+++ b/src/i18n/messages.js
@@ -208,7 +208,8 @@ const en = {
muted: 'Muted',
followers: 'Followers',
followees: 'Following',
- per_day: 'per day'
+ per_day: 'per day',
+ remote_follow: 'Remote follow'
},
timeline: {
show_new: 'Show new',
@@ -922,7 +923,11 @@ const es = {
}
const pt = {
+ chat: {
+ title: 'Chat'
+ },
nav: {
+ chat: 'Chat Local',
timeline: 'Linha do tempo',
mentions: 'Menções',
public_tl: 'Linha do tempo pública',
@@ -963,6 +968,12 @@ const pt = {
set_new_profile_background: 'Mudar o plano de fundo de perfil',
settings: 'Configurações',
theme: 'Tema',
+ presets: 'Predefinições',
+ theme_help: 'Use cores em códigos hexadecimais (#aabbcc) para personalizar seu esquema de cores.',
+ background: 'Plano de Fundo',
+ foreground: 'Primeiro Plano',
+ text: 'Texto',
+ links: 'Links',
filtering: 'Filtragem',
filtering_explanation: 'Todas as postagens contendo estas palavras serão silenciadas, uma por linha.',
attachments: 'Anexos',
@@ -970,7 +981,12 @@ const pt = {
hide_attachments_in_convo: 'Ocultar anexos em conversas',
nsfw_clickthrough: 'Habilitar clique para ocultar anexos NSFW',
autoload: 'Habilitar carregamento automático quando a rolagem chegar ao fim.',
- reply_link_preview: 'Habilitar a pré-visualização de link de respostas ao passar o mouse.'
+ streaming: 'Habilitar o fluxo automático de postagens quando ao topo da página',
+ reply_link_preview: 'Habilitar a pré-visualização de link de respostas ao passar o mouse.',
+ follow_import: 'Importar seguidas',
+ import_followers_from_a_csv_file: 'Importe os perfis que tu segues apartir de um arquivo CSV',
+ follows_imported: 'Seguidas importadas! O processamento das mesmas pode demorar um pouco.',
+ follow_import_error: 'Erro ao importar seguidas'
},
notifications: {
notifications: 'Notificações',
@@ -1000,7 +1016,8 @@ const pt = {
error_fetching_user: 'Erro procurando usuário'
},
general: {
- submit: 'Enviar'
+ submit: 'Enviar',
+ apply: 'Aplicar'
}
}
diff --git a/src/main.js b/src/main.js
index 359dbf52..a6f7e69f 100644
--- a/src/main.js
+++ b/src/main.js
@@ -138,7 +138,7 @@ window.fetch('/api/pleroma/emoji.json')
const emoji = Object.keys(values).map((key) => {
return { shortcode: key, image_url: values[key] }
})
- store.dispatch('setOption', { name: 'emoji', value: emoji })
+ store.dispatch('setOption', { name: 'customEmoji', value: emoji })
store.dispatch('setOption', { name: 'pleromaBackend', value: true })
},
(failure) => {
@@ -148,9 +148,19 @@ window.fetch('/api/pleroma/emoji.json')
(error) => console.log(error)
)
+window.fetch('/static/emoji.json')
+ .then((res) => res.json())
+ .then((values) => {
+ const emoji = Object.keys(values).map((key) => {
+ return { shortcode: key, image_url: false, 'utf': values[key] }
+ })
+ store.dispatch('setOption', { name: 'emoji', value: emoji })
+ })
+
window.fetch('/instance/panel.html')
.then((res) => res.text())
.then((html) => {
store.dispatch('setOption', { name: 'instanceSpecificPanelContent', value: html })
})
+
diff --git a/src/modules/chat.js b/src/modules/chat.js
index b1244ebe..383ac75c 100644
--- a/src/modules/chat.js
+++ b/src/modules/chat.js
@@ -1,7 +1,7 @@
const chat = {
state: {
messages: [],
- channel: null
+ channel: {state: ''}
},
mutations: {
setChannel (state, channel) {