mirror of
https://akkoma.dev/AkkomaGang/akkoma-fe
synced 2025-04-30 11:09:30 +08:00
85 lines
1.9 KiB
JavaScript
85 lines
1.9 KiB
JavaScript
import { library } from '@fortawesome/fontawesome-svg-core'
|
|
import {
|
|
faEnvelope,
|
|
faLock,
|
|
faLockOpen,
|
|
faGlobe
|
|
} from '@fortawesome/free-solid-svg-icons'
|
|
|
|
library.add(
|
|
faEnvelope,
|
|
faGlobe,
|
|
faLock,
|
|
faLockOpen
|
|
)
|
|
|
|
const SCOPE_LEVELS = {
|
|
'direct': 0,
|
|
'private': 1,
|
|
'local': 2,
|
|
'unlisted': 2,
|
|
'public': 3
|
|
}
|
|
|
|
const ScopeSelector = {
|
|
props: [
|
|
'showAll',
|
|
'userDefault',
|
|
'originalScope',
|
|
'initialScope',
|
|
'onScopeChange'
|
|
],
|
|
data () {
|
|
return {
|
|
currentScope: this.initialScope
|
|
}
|
|
},
|
|
computed: {
|
|
showNothing () {
|
|
return !this.showPublic && !this.showUnlisted && !this.showPrivate && !this.showDirect
|
|
},
|
|
showPublic () {
|
|
return this.originalScope !== 'direct' && this.shouldShow('public')
|
|
},
|
|
showLocal () {
|
|
return this.originalScope !== 'direct' && this.shouldShow('local')
|
|
},
|
|
showUnlisted () {
|
|
return this.originalScope !== 'direct' && this.shouldShow('unlisted')
|
|
},
|
|
showPrivate () {
|
|
return this.originalScope !== 'direct' && this.shouldShow('private')
|
|
},
|
|
showDirect () {
|
|
return this.shouldShow('direct')
|
|
},
|
|
css () {
|
|
return {
|
|
public: { selected: this.currentScope === 'public' },
|
|
unlisted: { selected: this.currentScope === 'unlisted' },
|
|
private: { selected: this.currentScope === 'private' },
|
|
direct: { selected: this.currentScope === 'direct' },
|
|
local: { selected: this.currentScope === 'local' }
|
|
}
|
|
}
|
|
},
|
|
methods: {
|
|
shouldShow (scope) {
|
|
if (!this.originalScope) {
|
|
return true
|
|
}
|
|
|
|
if (this.originalScope === 'local') {
|
|
return scope === 'direct' || scope === 'local'
|
|
}
|
|
|
|
return SCOPE_LEVELS[scope] <= SCOPE_LEVELS[this.originalScope]
|
|
},
|
|
changeVis (scope) {
|
|
this.currentScope = scope
|
|
this.onScopeChange && this.onScopeChange(scope)
|
|
}
|
|
}
|
|
}
|
|
|
|
export default ScopeSelector
|