Skip to content
Snippets Groups Projects
Verified Commit c43cd2f8 authored by Ciarán Ainsworth's avatar Ciarán Ainsworth Committed by Georg Krause
Browse files

Resolve "Channel: clicking auf "Subscribe" when not logged in still updates the subscriber count"

parent 6c34b143
Branches
Tags 0.10
No related merge requests found
Added modal to prompt users to log in when subscribing to channels (#1296)
...@@ -164,6 +164,7 @@ def discard_unused_icons(rule): ...@@ -164,6 +164,7 @@ def discard_unused_icons(rule):
".wikipedia", ".wikipedia",
".wrench", ".wrench",
".x", ".x",
".key",
] ]
if ":before" not in rule["lines"][0]: if ":before" not in rule["lines"][0]:
return False return False
......
<template> <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> <i class="heart icon"></i>
<translate v-if="isSubscribed" translate-context="Content/Track/Button.Message">Unsubscribe</translate> <translate v-if="isSubscribed" translate-context="Content/Track/Button.Message">Unsubscribe</translate>
<translate v-else translate-context="Content/Track/*/Verb">Subscribe</translate> <translate v-else translate-context="Content/Track/*/Verb">Subscribe</translate>
</button> </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> </template>
<script> <script>
import LoginModal from '@/components/common/LoginModal'
export default { export default {
props: { props: {
channel: {type: Object}, channel: {type: Object},
}, },
components: {
LoginModal
},
computed: { computed: {
title () { title () {
if (this.isSubscribed) { if (this.isSubscribed) {
...@@ -21,7 +38,12 @@ export default { ...@@ -21,7 +38,12 @@ export default {
}, },
isSubscribed () { isSubscribed () {
return this.$store.getters['channels/isSubscribed'](this.channel.uuid) 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: { methods: {
toggle () { toggle () {
......
<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>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment