Resolve "Channel: clicking auf "Subscribe" when not logged in still updates the subscriber count"
This commit is contained in:
parent
ec77040e87
commit
9b3f90a7ba
|
@ -0,0 +1 @@
|
|||
Added modal to prompt users to log in when subscribing to channels (#1296)
|
|
@ -164,6 +164,7 @@ def discard_unused_icons(rule):
|
|||
".wikipedia",
|
||||
".wrench",
|
||||
".x",
|
||||
".key",
|
||||
]
|
||||
if ":before" not in rule["lines"][0]:
|
||||
return False
|
||||
|
|
|
@ -1,16 +1,33 @@
|
|||
<template>
|
||||
<button @click.stop="toggle" :class="['ui', 'pink', {'inverted': isSubscribed}, {'favorited': isSubscribed}, 'icon', 'labeled', 'button']">
|
||||
<button v-if="$store.state.auth.authenticated" @click.stop="toggle" :class="['ui', 'pink', {'inverted': isSubscribed}, {'favorited': isSubscribed}, 'icon', 'labeled', 'button']">
|
||||
<i class="heart icon"></i>
|
||||
<translate v-if="isSubscribed" translate-context="Content/Track/Button.Message">Unsubscribe</translate>
|
||||
<translate v-else translate-context="Content/Track/*/Verb">Subscribe</translate>
|
||||
</button>
|
||||
<button @click="$refs.loginModal.show = true" v-else :class="['ui', 'pink', 'icon', 'labeled', 'button']">
|
||||
<i class="heart icon"></i>
|
||||
<translate translate-context="Content/Track/*/Verb">Subscribe</translate>
|
||||
<login-modal
|
||||
ref="loginModal"
|
||||
class="small"
|
||||
:nextRoute='this.$route.fullPath'
|
||||
:message='this.message.authMessage'
|
||||
:cover='this.channel.artist.cover'
|
||||
@created="$refs.loginModal.show = false;">
|
||||
</login-modal>
|
||||
</button>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import LoginModal from '@/components/common/LoginModal'
|
||||
|
||||
export default {
|
||||
props: {
|
||||
channel: {type: Object},
|
||||
},
|
||||
components: {
|
||||
LoginModal
|
||||
},
|
||||
computed: {
|
||||
title () {
|
||||
if (this.isSubscribed) {
|
||||
|
@ -21,7 +38,12 @@ export default {
|
|||
},
|
||||
isSubscribed () {
|
||||
return this.$store.getters['channels/isSubscribed'](this.channel.uuid)
|
||||
}
|
||||
},
|
||||
message () {
|
||||
return {
|
||||
authMessage: this.$pgettext('Popup/Message/Paragraph', 'You need to be logged in to subscribe to this channel')
|
||||
}
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
toggle () {
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
<template>
|
||||
<modal :show.sync="show">
|
||||
<h4 class="header">{{ labels.header }}</h4>
|
||||
<div v-if="cover" class="image content">
|
||||
<div class="ui medium image">
|
||||
<img :src="cover.urls.medium_square_crop">
|
||||
</div>
|
||||
<div class="description">
|
||||
<div class="ui header">
|
||||
{{ labels.description }}
|
||||
</div>
|
||||
<p>
|
||||
{{ message }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="content">
|
||||
<div class="ui centered header">
|
||||
{{ labels.description }}
|
||||
</div>
|
||||
<p style="text-align: center;">
|
||||
{{ message }}
|
||||
</p>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<router-link :to="{path: '/login', query: { next: nextRoute }}" class="ui labeled icon button"><i class="key icon"></i>
|
||||
{{ labels.login }}
|
||||
</router-link>
|
||||
<router-link v-if="$store.state.instance.settings.users.registration_enabled.value" :to="{path: '/signup'}" class="ui labeled icon button"><i class="user icon"></i>
|
||||
{{ labels.signup }}
|
||||
</router-link>
|
||||
</div>
|
||||
</modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Modal from '@/components/semantic/Modal'
|
||||
|
||||
export default {
|
||||
props: {
|
||||
nextRoute: {type: String},
|
||||
message: {type: String},
|
||||
cover: {type: Object},
|
||||
},
|
||||
components: {
|
||||
Modal,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
show: false,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
labels() {
|
||||
return {
|
||||
header: this.$pgettext('Popup/Title/Noun', "Unauthenticated"),
|
||||
login: this.$pgettext('*/*/Button.Label/Verb', "Log in"),
|
||||
signup: this.$pgettext('*/*/Button.Label/Verb', "Sign up"),
|
||||
description: this.$pgettext('Popup/*/Paragraph', "You don't have access!"),
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
Loading…
Reference in New Issue