aboutsummaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/components')
-rw-r--r--src/components/chat/chat.js8
-rw-r--r--src/components/poll/poll.vue7
-rw-r--r--src/components/poll/poll_form.vue1
-rw-r--r--src/components/registration/registration.js17
-rw-r--r--src/components/registration/registration.vue17
-rw-r--r--src/components/user_card/user_card.vue4
6 files changed, 47 insertions, 7 deletions
diff --git a/src/components/chat/chat.js b/src/components/chat/chat.js
index e57fcb91..2780be75 100644
--- a/src/components/chat/chat.js
+++ b/src/components/chat/chat.js
@@ -234,6 +234,13 @@ const Chat = {
const scrollable = this.$refs.scrollable
return scrollable && scrollable.scrollTop <= 0
},
+ cullOlderCheck () {
+ window.setTimeout(() => {
+ if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {
+ this.$store.dispatch('cullOlderMessages', this.currentChatMessageService.chatId)
+ }
+ }, 5000)
+ },
handleScroll: _.throttle(function () {
if (!this.currentChat) { return }
@@ -241,6 +248,7 @@ const Chat = {
this.fetchChat({ maxId: this.currentChatMessageService.minId })
} else if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {
this.jumpToBottomButtonVisible = false
+ this.cullOlderCheck()
if (this.newMessageCount > 0) {
// Use a delay before marking as read to prevent situation where new messages
// arrive just as you're leaving the view and messages that you didn't actually
diff --git a/src/components/poll/poll.vue b/src/components/poll/poll.vue
index 42819c19..187d1829 100644
--- a/src/components/poll/poll.vue
+++ b/src/components/poll/poll.vue
@@ -58,7 +58,12 @@
{{ $t('polls.vote') }}
</button>
<div class="total">
- {{ totalVotesCount }} {{ $t("polls.votes") }}&nbsp;·&nbsp;
+ <template v-if="typeof poll.voters_count === 'number'">
+ {{ $tc("polls.people_voted_count", poll.voters_count, { count: poll.voters_count }) }}&nbsp;·&nbsp;
+ </template>
+ <template v-else>
+ {{ $tc("polls.votes_count", poll.votes_count, { count: poll.votes_count }) }}&nbsp;·&nbsp;
+ </template>
</div>
<i18n :path="expired ? 'polls.expired' : 'polls.expires_in'">
<Timeago
diff --git a/src/components/poll/poll_form.vue b/src/components/poll/poll_form.vue
index 09496105..c4403210 100644
--- a/src/components/poll/poll_form.vue
+++ b/src/components/poll/poll_form.vue
@@ -151,6 +151,7 @@
border: none;
box-shadow: none;
background-color: transparent;
+ padding-right: 0.75em;
}
}
diff --git a/src/components/registration/registration.js b/src/components/registration/registration.js
index dab06e1e..1ac8e8be 100644
--- a/src/components/registration/registration.js
+++ b/src/components/registration/registration.js
@@ -10,7 +10,8 @@ const registration = {
fullname: '',
username: '',
password: '',
- confirm: ''
+ confirm: '',
+ reason: ''
},
captcha: {}
}),
@@ -24,7 +25,8 @@ const registration = {
confirm: {
required,
sameAsPassword: sameAs('password')
- }
+ },
+ reason: { required: requiredIf(() => this.accountApprovalRequired) }
}
}
},
@@ -38,7 +40,10 @@ const registration = {
computed: {
token () { return this.$route.params.token },
bioPlaceholder () {
- return this.$t('registration.bio_placeholder').replace(/\s*\n\s*/g, ' \n')
+ return this.replaceNewlines(this.$t('registration.bio_placeholder'))
+ },
+ reasonPlaceholder () {
+ return this.replaceNewlines(this.$t('registration.reason_placeholder'))
},
...mapState({
registrationOpen: (state) => state.instance.registrationOpen,
@@ -46,7 +51,8 @@ const registration = {
isPending: (state) => state.users.signUpPending,
serverValidationErrors: (state) => state.users.signUpErrors,
termsOfService: (state) => state.instance.tos,
- accountActivationRequired: (state) => state.instance.accountActivationRequired
+ accountActivationRequired: (state) => state.instance.accountActivationRequired,
+ accountApprovalRequired: (state) => state.instance.accountApprovalRequired
})
},
methods: {
@@ -73,6 +79,9 @@ const registration = {
},
setCaptcha () {
this.getCaptcha().then(cpt => { this.captcha = cpt })
+ },
+ replaceNewlines (str) {
+ return str.replace(/\s*\n\s*/g, ' \n')
}
}
}
diff --git a/src/components/registration/registration.vue b/src/components/registration/registration.vue
index 100df0d6..062d4121 100644
--- a/src/components/registration/registration.vue
+++ b/src/components/registration/registration.vue
@@ -163,6 +163,23 @@
</div>
<div
+ v-if="accountApprovalRequired"
+ class="form-group"
+ >
+ <label
+ class="form--label"
+ for="reason"
+ >{{ $t('registration.reason') }}</label>
+ <textarea
+ id="reason"
+ v-model="user.reason"
+ :disabled="isPending"
+ class="form-control"
+ :placeholder="reasonPlaceholder"
+ />
+ </div>
+
+ <div
v-if="captcha.type != 'none'"
id="captcha-group"
class="form-group"
diff --git a/src/components/user_card/user_card.vue b/src/components/user_card/user_card.vue
index 773f764a..572943b5 100644
--- a/src/components/user_card/user_card.vue
+++ b/src/components/user_card/user_card.vue
@@ -83,13 +83,13 @@
v-if="!!visibleRole"
class="alert user-role"
>
- {{ $t(`user_card.roles.${visibleRole}`) }}
+ {{ $t(`general.role.${visibleRole}`) }}
</span>
<span
v-if="user.bot"
class="alert user-role"
>
- bot
+ {{ $t('user_card.bot') }}
</span>
</template>
<span v-if="user.locked">