Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Philipp Wolfer
funkwhale
Commits
9b3f90a7
Commit
9b3f90a7
authored
Apr 30, 2021
by
Ciarán Ainsworth
Browse files
Resolve "Channel: clicking auf "Subscribe" when not logged in still updates the subscriber count"
parent
ec77040e
Changes
4
Hide whitespace changes
Inline
Side-by-side
changes/changelog.d/1296.enhancement
0 → 100644
View file @
9b3f90a7
Added modal to prompt users to log in when subscribing to channels (#1296)
front/scripts/fix-fomantic-css.py
View file @
9b3f90a7
...
...
@@ -164,6 +164,7 @@ def discard_unused_icons(rule):
".wikipedia"
,
".wrench"
,
".x"
,
".key"
,
]
if
":before"
not
in
rule
[
"lines"
][
0
]:
return
False
...
...
front/src/components/channels/SubscribeButton.vue
View file @
9b3f90a7
<
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
()
{
...
...
front/src/components/common/LoginModal.vue
0 → 100644
View file @
9b3f90a7
<
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
>
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment