Merge branch 'stable' into develop

This commit is contained in:
Georg Krause 2022-02-04 12:51:41 +01:00
commit b39bd5f349
No known key found for this signature in database
GPG Key ID: FD479B9A4D48E632
8 changed files with 113 additions and 48 deletions

View File

@ -10,6 +10,63 @@ This changelog is viewable on the web at https://docs.funkwhale.audio/changelog.
.. towncrier
1.2.2 (2020-02-04)
------------------
Upgrade instructions are available at
https://docs.funkwhale.audio/admin/upgrading.html
Bugfixes:
- Fix an issue where the tracks tab in a library doesn't show any tracks (#1683)
- Fix an issue with the embedded player not showing any content (#1675)
- Fix broken instance description if it contains a line break #1673
Dependency Updates:
Update dependency vue-template-compiler to 2.6.14
Update dependency vue to ^2.6.14
Update dependency vuex-persistedstate to ^2.7.1
Update dependency vuedraggable to ^2.24.3
Update dependency vue-lazyload to ^1.3.3
Update dependency vue-plyr to ^5.1.3
Update dependency vue-upload-component to ^2.8.22
Update dependency vue-gettext to ^2.1.12
Update dependency showdown to ^1.9.1
Update dependency js-logger to ^1.6.1
Update dependency register-service-worker to ^1.7.2
Update dependency howler to ^2.2.3
Update dependency fomantic-ui-css to ^2.8.8
Update dependency diff to ^4.0.2
Update dependency axios-auth-refresh to ^2.2.8
Contributors to our Issues:
- Ciarán Ainsworth
- Georg Krause
- JuniorJPDJ
- Marcos Peña
- Mathieu Jourdan
- Micha Gläß-Stöcker
- Ricardo
- petitminion
Contributors to our Merge Requests:
- Ciarán Ainsworth
- Georg Krause
- JuniorJPDJ
- Marcos Peña
Committers
- Ciarán Ainsworth
- Georg Krause
- JuniorJPDJ
- Keunes
- Marcos Peña
1.2.1 (2022-01-06)
------------------

View File

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
__version__ = "1.2.1"
__version__ = "1.2.2"
__version_info__ = tuple(
[
int(num) if num.isdigit() else num

View File

@ -252,7 +252,7 @@ function getURLParams () {
const decode = function (s) { return decodeURIComponent(s.replace(pl, ' ')) }
const query = window.location.search.substring(1)
while (match === search.exec(query)) { urlParams[decode(match[1])] = decode(match[2]) }
while ((match = search.exec(query)) !== null) { urlParams[decode(match[1])] = decode(match[2]) }
return urlParams
}
export default {

View File

@ -39,23 +39,24 @@
>
<div class="ui stackable grid">
<div class="eight wide column">
<p v-if="!truncatedDescription">
<p v-if="!renderedDescription">
<translate translate-context="Content/Home/Paragraph">
No description available.
</translate>
</p>
<template v-if="truncatedDescription || rules">
<template v-if="renderedDescription || rules">
<div
v-if="truncatedDescription"
v-html="truncatedDescription"
v-if="renderedDescription"
id="renderedDescription"
v-html="renderedDescription"
/>
<div
v-if="truncatedDescription"
v-if="renderedDescription"
class="ui hidden divider"
/>
<div class="ui relaxed list">
<div
v-if="truncatedDescription"
v-if="renderedDescription"
class="item"
>
<i class="arrow right icon" />
@ -324,7 +325,6 @@
</template>
<script>
import $ from 'jquery'
import _ from '@/lodash'
import { mapState } from 'vuex'
import showdown from 'showdown'
@ -372,22 +372,12 @@ export default {
rules () {
return _.get(this.nodeinfo, 'metadata.rules')
},
truncatedDescription () {
renderedDescription () {
if (!this.longDescription) {
return
}
const doc = this.markdown.makeHtml(this.longDescription)
const nodes = $.parseHTML(doc)
const excerptParts = []
let handled = 0
nodes.forEach((n) => {
const content = n.innerHTML || n.nodeValue
if (handled < this.excerptLength && content.trim()) {
excerptParts.push(n)
handled += 1
}
})
return excerptParts.map((p) => { return p.outerHTML }).join('')
return doc
},
stats () {
const data = {

View File

@ -123,11 +123,6 @@ export default {
artist: this.$pgettext('*/*/*/Noun', 'Artist')
}
}
},
methods: {
updatePage: function (page) {
this.$emit('page-changed', page)
}
}
}
</script>

View File

@ -5,8 +5,9 @@
v-if="search"
v-model="query"
@search="
currentPage = 1;
additionalTracks = [];
fetchData();
fetchData('tracks/');
"
/>
@ -106,10 +107,10 @@
class="ui center aligned basic segment desktop-and-up"
>
<pagination
:total="total"
:current="page"
:total="totalTracks"
:current=" tracks.length > 0 ? page : {currentPage}"
:paginate-by="paginateBy"
v-on="$listeners"
@page-changed="updatePage"
/>
</div>
</div>
@ -140,15 +141,16 @@
:is-podcast="isPodcast"
/>
<div
v-if="paginateResults"
v-if="paginateResults && totalTracks > paginateBy"
class="ui center aligned basic segment tablet-and-below"
>
<pagination
v-if="paginateResults"
:total="total"
:current="page"
v-if="paginateResults && totalTracks > paginateBy"
:paginate-by="paginateBy"
:total="totalTracks"
:current="tracks.length > 0 ? page : {currentPage}"
:compact="true"
v-on="$listeners"
@page-changed="updatePage"
/>
</div>
</div>
@ -194,10 +196,11 @@ export default {
fetchDataUrl: this.nextUrl,
isLoading: false,
additionalTracks: [],
query: ''
query: '',
totalTracks: this.total,
currentPage: this.page
}
},
computed: {
allTracks () {
return (this.tracks || []).concat(this.additionalTracks)
@ -212,7 +215,7 @@ export default {
}
},
created () {
if (!this.tracks) {
if (this.tracks.length === 0) {
this.fetchData('tracks/')
}
},
@ -224,15 +227,15 @@ export default {
this.isLoading = true
const self = this
const params = _.clone(this.filters)
const tracksPromise = axios.get(url, { params: params })
params.page_size = this.limit
params.page = this.page
params.page_size = this.paginateBy
params.page = this.currentPage
params.include_channels = true
params.q = this.query
const tracksPromise = await axios.get(url, { params: params })
try {
await tracksPromise
self.nextPage = tracksPromise.data.next
self.objects = tracksPromise.data.results
self.count = tracksPromise.data.count
self.fetchDataUrl = tracksPromise.data.next
self.additionalTracks = tracksPromise.data.results
self.totalTracks = tracksPromise.data.count
self.$emit('fetched', tracksPromise.data)
self.isLoading = false
} catch (e) {
@ -241,8 +244,13 @@ export default {
}
},
updatePage: function (page) {
if (this.tracks.length === 0) {
this.currentPage = page
this.fetchData('tracks/')
} else {
this.$emit('page-changed', page)
}
}
}
}
</script>

View File

@ -31,3 +31,18 @@
display: block;
}
}
#renderedDescription {
display: -webkit-box;
-webkit-line-clamp: 5;
-webkit-box-orient: vertical;
overflow: hidden;
}
#renderedDescription p {
margin: 0;
}
#renderedDescription *:not(:first-child) {
display: none;
}

View File

@ -36,7 +36,7 @@ export default {
TrackTable
},
props: {
object: { type: String, required: true },
object: { type: [Object, String], required: true },
isOwner: { type: Boolean, required: true }
}
}