move `toLocalePublicationString` to`utils/helper` (#2748)

* move toLocalePublicationString to helper

* remove unnecessary assignments

Co-Authored-By: absidue <48293849+absidue@users.noreply.github.com>

* Update src/renderer/components/ft-list-video/ft-list-video.js

Co-authored-by: PikachuEXE <pikachuexe@gmail.com>

* fix linter issue

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
This commit is contained in:
ChunkyProgrammer 2022-10-20 02:03:31 -04:00 committed by GitHub
parent 7819dcd99f
commit 2c5c654b66
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 60 additions and 88 deletions

View File

@ -2,7 +2,12 @@ import Vue from 'vue'
import FtIconButton from '../ft-icon-button/ft-icon-button.vue'
import { mapActions } from 'vuex'
import i18n from '../../i18n/index'
import { copyToClipboard, openExternalLink, showToast } from '../../helpers/utils'
import {
copyToClipboard,
openExternalLink,
showToast,
toLocalePublicationString
} from '../../helpers/utils'
export default Vue.extend({
name: 'FtListVideo',
@ -392,15 +397,11 @@ export default Vue.extend({
if (typeof (this.data.publishedText) !== 'undefined' && this.data.publishedText !== null && !this.isLive) {
// produces a string according to the template in the locales string
this.toLocalePublicationString({
this.uploadedTime = toLocalePublicationString({
publishText: this.publishedText,
isLive: this.isLive,
isUpcoming: this.isUpcoming,
isRSS: this.data.isRSS
}).then((data) => {
this.uploadedTime = data
}).catch((error) => {
console.error(error)
})
}
@ -503,7 +504,6 @@ export default Vue.extend({
},
...mapActions([
'toLocalePublicationString',
'openInExternalPlayer',
'updateHistory',
'removeFromHistory',

View File

@ -6,7 +6,7 @@ import FtSelect from '../../components/ft-select/ft-select.vue'
import FtTimestampCatcher from '../../components/ft-timestamp-catcher/ft-timestamp-catcher.vue'
import autolinker from 'autolinker'
import ytcm from '@freetube/yt-comment-scraper'
import { copyToClipboard, showToast } from '../../helpers/utils'
import { copyToClipboard, showToast, toLocalePublicationString } from '../../helpers/utils'
export default Vue.extend({
name: 'WatchVideoComments',
@ -204,16 +204,10 @@ export default Vue.extend({
comment.authorThumb = comment.authorThumb[0].url
comment.replies = []
comment.dataType = 'local'
this.toLocalePublicationString({
publishText: (comment.time + ' ago'),
isLive: false,
isUpcoming: false,
isRSS: false
}).then((data) => {
comment.time = data
}).catch((error) => {
console.error(error)
comment.time = toLocalePublicationString({
publishText: (comment.time + ' ago')
})
if (this.hideCommentLikes) {
comment.likes = null
}
@ -352,7 +346,6 @@ export default Vue.extend({
},
...mapActions([
'toLocalePublicationString',
'invidiousAPICall'
])
}

View File

@ -102,6 +102,55 @@ export function calculatePublishedDate(publishedText) {
return date.getTime() - timeSpan
}
export function toLocalePublicationString ({ publishText, isLive = false, isUpcoming = false, isRSS = false }) {
if (isLive) {
return '0' + i18n.t('Video.Watching')
} else if (isUpcoming || publishText === null) {
// the check for null is currently just an inferring of knowledge, because there is no other possibility left
return `${i18n.t('Video.Published.Upcoming')}: ${publishText}`
} else if (isRSS) {
return publishText
}
const strings = publishText.split(' ')
// filters out the streamed x hours ago and removes the streamed in order to keep the rest of the code working
if (strings[0].toLowerCase() === 'streamed') {
strings.shift()
}
const singular = (strings[0] === '1')
let translationKey = ''
switch (strings[1].substring(0, 2)) {
case 'se':
translationKey = 'Video.Published.Second'
break
case 'mi':
translationKey = 'Video.Published.Minute'
break
case 'ho':
translationKey = 'Video.Published.Hour'
break
case 'da':
translationKey = 'Video.Published.Day'
break
case 'we':
translationKey = 'Video.Published.Week'
break
case 'mo':
translationKey = 'Video.Published.Month'
break
case 'ye':
translationKey = 'Video.Published.Year'
break
default:
return publishText
}
if (!singular) {
translationKey += 's'
}
const unit = i18n.t(translationKey)
return i18n.t('Video.Publicationtemplate', { number: strings[0], unit })
}
export function buildVTTFileLocally(storyboard) {
let vttString = 'WEBVTT\n\n'
// how many images are in one image

View File

@ -697,76 +697,6 @@ const actions = {
}
},
toLocalePublicationString ({ dispatch }, payload) {
if (payload.isLive) {
return '0' + i18n.t('Video.Watching')
} else if (payload.isUpcoming || payload.publishText === null) {
// the check for null is currently just an inferring of knowledge, because there is no other possibility left
return `${i18n.t('Video.Published.Upcoming')}: ${payload.publishText}`
} else if (payload.isRSS) {
return payload.publishText
}
const strings = payload.publishText.split(' ')
// filters out the streamed x hours ago and removes the streamed in order to keep the rest of the code working
if (strings[0].toLowerCase() === 'streamed') {
strings.shift()
}
const singular = (strings[0] === '1')
let unit
switch (strings[1].substring(0, 2)) {
case 'se':
if (singular) {
unit = i18n.t('Video.Published.Second')
} else {
unit = i18n.t('Video.Published.Seconds')
}
break
case 'mi':
if (singular) {
unit = i18n.t('Video.Published.Minute')
} else {
unit = i18n.t('Video.Published.Minutes')
}
break
case 'ho':
if (singular) {
unit = i18n.t('Video.Published.Hour')
} else {
unit = i18n.t('Video.Published.Hours')
}
break
case 'da':
if (singular) {
unit = i18n.t('Video.Published.Day')
} else {
unit = i18n.t('Video.Published.Days')
}
break
case 'we':
if (singular) {
unit = i18n.t('Video.Published.Week')
} else {
unit = i18n.t('Video.Published.Weeks')
}
break
case 'mo':
if (singular) {
unit = i18n.t('Video.Published.Month')
} else {
unit = i18n.t('Video.Published.Months')
}
break
case 'ye':
if (singular) {
unit = i18n.t('Video.Published.Year')
} else {
unit = i18n.t('Video.Published.Years')
}
break
}
return i18n.t('Video.Publicationtemplate', { number: strings[0], unit })
},
clearSessionSearchHistory ({ commit }) {
commit('setSessionSearchHistory', [])
},