Renamed some query parameters

Renamed `no` to `hide`, `block` to `ban` and changed
`media=yes|no|notext` to two simple boolean parameters
`text` and `meida`. Empty parameters now also keep their `=`
so empty lists (e.g. `tags`) won't look like boolean switches.
This commit is contained in:
Marcel Hellkamp 2023-07-31 15:21:28 +02:00
parent c894d076fe
commit c560a13e92
2 changed files with 18 additions and 40 deletions

View File

@ -70,20 +70,10 @@ const formMediaMedia = computed({
config.value.showMedia = value
if (!value) {
config.value.showText = true
config.value.playVideos = false
}
}
});
const formAutoplay = computed({
get: () => config.value.playVideos,
set: (value) => {
config.value.playVideos = value
if (value)
config.value.showMedia = true
}
});
const sourceCount = computed(() => {
var c = 0
c += config.value.servers.length * config.value.tags.length
@ -304,7 +294,7 @@ const onSubmit = () => {
</label>
</div>
<div class="form-check ms-3">
<input class="form-check-input" type="checkbox" id="edit-autoplay" v-model="formAutoplay">
<input class="form-check-input" type="checkbox" id="edit-autoplay" v-model="config.playVideos" :disabled="!formMediaMedia">
<label class="form-check-label" for="edit-autoplay">
Autoplay videos (muted)
</label>

View File

@ -6,11 +6,11 @@ import { type Config } from '@/types';
export const siteConfigParam = "load"
let siteConfig: Config | undefined;
let siteConfigSource: string|undefined = undefined;
let siteConfigSource: string | undefined = undefined;
const themes = ["dark", "light", "auto"];
const boolYes = ["", "y", "yes", "true"];
const boolNo = ["n", "no", "false"];
const boolYes = ["yes", "", "y", "true"];
const boolNo = ["no", "n", "false"];
const fromBool = (value: string): boolean | undefined => {
return boolYes.includes(value.toLowerCase())
@ -77,7 +77,7 @@ const parameterDefinitions: Array<ParamDef> = [
// Filter options
{
names: ["no"],
names: ["hide"],
from: (config: Partial<Config>, value: string) => {
const flags = value.split(",")
config.hideSensitive = flags.includes("nsfw")
@ -100,7 +100,7 @@ const parameterDefinitions: Array<ParamDef> = [
to: (config: Config) => (config.languages || []).join(","),
},
{
names: ["block"],
names: ["ban"],
from: (config: Partial<Config>, value: string) => config.badWords = value.split(","),
to: (config: Config) => (config.badWords || []).join(","),
},
@ -131,24 +131,17 @@ const parameterDefinitions: Array<ParamDef> = [
to: (config: Config) => toBool(config.showInfobar),
},
{
// yes = text+media
// no = text
// notext = media
names: ["media"],
from: (config: Partial<Config>, value: string) => {
config.showText = ["yes", "no"].includes(value.trim().toLocaleLowerCase())
config.showMedia = ["yes", "notext"].includes(value.trim().toLocaleLowerCase())
},
to: (config: Config) => {
if (!config.showText)
return "notext"
if (!config.showMedia)
return "no"
return "yes"
},
names: ["text"],
from: (config: Partial<Config>, value: string) => config.showText = fromBool(value),
to: (config: Config) => toBool(config.showText),
},
{
names: ["autoplay", "play"],
names: ["media"],
from: (config: Partial<Config>, value: string) => config.showMedia = fromBool(value),
to: (config: Config) => toBool(config.showMedia),
},
{
names: ["autoplay"],
from: (config: Partial<Config>, value: string) => config.playVideos = fromBool(value),
to: (config: Config) => toBool(config.playVideos),
}]
@ -201,7 +194,6 @@ export function toQuery(config: Config, userConfig?: string): string {
.replace(/%2F/g, '/') // save in query strings
.replace(/%2C/g, ',') // save in query strings
.replace(/%40/g, '@') // save in query strings
.replace(/=(&|$)/g, '') // a=&b= -> a&b
}
export function isTag(tag: any) {
@ -258,7 +250,7 @@ export function sanatizeConfig(config: any): Config {
result.languages = arrayUnique((Array.isArray(config.languages) ? [...config.languages] : [...fallback.languages]).filter(isLanguage));
result.badWords = arrayUnique((Array.isArray(config.badWords) ? [...config.badWords] : [...fallback.badWords]).filter(isTag));
result.hideSensitive = boolOr(config.hideNsfw, fallback.hideSensitive)
result.hideSensitive = boolOr(config.hideSensitive, fallback.hideSensitive)
result.hideBoosts = boolOr(config.hideBoosts, fallback.hideBoosts)
result.hideBots = boolOr(config.hideBots, fallback.hideBots)
result.hideReplies = boolOr(config.hideReplies, fallback.hideReplies)
@ -272,10 +264,6 @@ export function sanatizeConfig(config: any): Config {
result.showText = boolOr(config.showText, fallback.showText)
result.showMedia = boolOr(config.showMedia, fallback.showMedia)
result.playVideos = boolOr(config.playVideos, fallback.playVideos)
if (result.playVideos)
result.showMedia = true
if (!result.showMedia)
result.playVideos = false
if (!result.showMedia && !result.showText)
result.showText = true
@ -288,8 +276,8 @@ export async function loadConfig() {
const loadJson = async (url: string) => {
try {
const rs = await fetch(url, {cache: "reload", })
if(!rs.ok) throw new Error(`HTTP error! Status: ${rs.status}`);
const rs = await fetch(url, { cache: "reload", })
if (!rs.ok) throw new Error(`HTTP error! Status: ${rs.status}`);
siteConfig = sanatizeConfig(await rs.json() || {});
siteConfigSource = url
} catch (e) {