Remove orphan settings
This commit is contained in:
parent
0d7c535a70
commit
5f3562fe5b
@ -245,33 +245,6 @@ interface SettingsInterface {
|
||||
limit?: number,
|
||||
}
|
||||
}
|
||||
// -----------------------------------------
|
||||
// ::: ACTIONS :::
|
||||
// -----------------------------------------
|
||||
// Nastavitve za ukaze. Zamenja stare nastavitve za bližnične tipke.
|
||||
//
|
||||
// Polje 'shortcut' je tabela, če se slučajno lotimo kdaj delati choordov.
|
||||
actions: {
|
||||
name?: string, // name displayed in settings
|
||||
label?: string, // name displayed in ui (can be overridden in scope/playerUi)
|
||||
cmd?: {
|
||||
action: string,
|
||||
arg: any,
|
||||
customArg?: any,
|
||||
persistent?: boolean, // optional, false by default. If true, change doesn't take effect immediately.
|
||||
// Instead, this action saves stuff to settings
|
||||
}[],
|
||||
scopes?: {
|
||||
global?: ActionScopeInterface,
|
||||
site?: ActionScopeInterface,
|
||||
page?: ActionScopeInterface
|
||||
},
|
||||
playerUi?: {
|
||||
show: boolean,
|
||||
path?: string,
|
||||
},
|
||||
userAdded?: boolean,
|
||||
}[],
|
||||
// This object fulfills the same purpose as 'actions', but is written in less retarded and overly
|
||||
// complicated way. Hopefully it'll be easier to maintain it that way.
|
||||
commands?: {
|
||||
|
@ -577,803 +577,6 @@ const ExtensionConf: SettingsInterface = {
|
||||
internalOnly: true
|
||||
}]
|
||||
},
|
||||
// -----------------------------------------
|
||||
// ::: ACTIONS :::
|
||||
// -----------------------------------------
|
||||
actions: [{
|
||||
name: 'Trigger automatic detection', // name displayed in settings
|
||||
label: 'Automatic', // name displayed in ui (can be overridden in scope/playerUi)
|
||||
cmd: [{
|
||||
action: 'set-ar',
|
||||
arg: AspectRatioType.Automatic,
|
||||
persistent: false, // optional, false by default. If true, change doesn't take effect immediately.
|
||||
// Instead, this action saves stuff to settings
|
||||
}],
|
||||
scopes: {
|
||||
global: { // if 'global' is undefined, 'show' is presumed to be 'false'
|
||||
show: false,
|
||||
},
|
||||
site: {
|
||||
show: false,
|
||||
},
|
||||
page: {
|
||||
show: true,
|
||||
label: 'Automatic', // example override, takes precedence over default label
|
||||
shortcut: [{
|
||||
key: 'a',
|
||||
code: 'KeyA',
|
||||
ctrlKey: false,
|
||||
metaKey: false,
|
||||
altKey: false,
|
||||
shiftKey: false,
|
||||
onKeyUp: true,
|
||||
onKeyDown: false,
|
||||
}],
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
path: 'crop',
|
||||
},
|
||||
}, {
|
||||
name: 'Reset to default',
|
||||
label: 'Reset',
|
||||
cmd: [{
|
||||
action: 'set-ar',
|
||||
arg: AspectRatioType.Reset,
|
||||
}],
|
||||
scopes: {
|
||||
page: {
|
||||
show: true,
|
||||
shortcut: [{
|
||||
key: 'r',
|
||||
code: 'KeyR',
|
||||
ctrlKey: false,
|
||||
metaKey: false,
|
||||
altKey: false,
|
||||
shiftKey: false,
|
||||
onKeyUp: true,
|
||||
onKeyDown: false,
|
||||
}],
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
path: 'crop'
|
||||
},
|
||||
}, {
|
||||
name: 'Fit to width',
|
||||
label: 'Fit width',
|
||||
cmd: [{
|
||||
action: 'set-ar',
|
||||
arg: AspectRatioType.FitWidth,
|
||||
}],
|
||||
scopes: {
|
||||
page: {
|
||||
show: true,
|
||||
shortcut: [{
|
||||
key: 'w',
|
||||
code: 'KeyW',
|
||||
ctrlKey: false,
|
||||
metaKey: false,
|
||||
altKey: false,
|
||||
shiftKey: false,
|
||||
onKeyUp: true,
|
||||
onKeyDown: false,
|
||||
}],
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
path: 'crop'
|
||||
}
|
||||
}, {
|
||||
name: 'Fit to height',
|
||||
label: 'Fit height',
|
||||
cmd: [{
|
||||
action: 'set-ar',
|
||||
arg: AspectRatioType.FitHeight
|
||||
}],
|
||||
scopes: {
|
||||
page: {
|
||||
show: true,
|
||||
shortcut: [{
|
||||
key: 'e',
|
||||
code: 'KeyE',
|
||||
ctrlKey: false,
|
||||
metaKey: false,
|
||||
altKey: false,
|
||||
shiftKey: false,
|
||||
onKeyUp: true,
|
||||
onKeyDown: false,
|
||||
}]
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
path: 'crop'
|
||||
}
|
||||
}, {
|
||||
name: 'Cycle aspect ratio',
|
||||
label: 'Cycle',
|
||||
cmd: [{
|
||||
action: 'set-ar',
|
||||
arg: AspectRatioType.Cycle
|
||||
}]
|
||||
},{
|
||||
userAdded: true,
|
||||
name: 'Set aspect ratio to 16:9',
|
||||
label: '16:9',
|
||||
cmd: [{
|
||||
action: 'set-ar',
|
||||
arg: AspectRatioType.Fixed,
|
||||
customArg: 1.78,
|
||||
}],
|
||||
scopes: {
|
||||
page: {
|
||||
show: true,
|
||||
shortcut: [{
|
||||
key: 's',
|
||||
code: 'KeyS',
|
||||
ctrlKey: false,
|
||||
metaKey: false,
|
||||
altKey: false,
|
||||
shiftKey: false,
|
||||
onKeyUp: false,
|
||||
onKeyDown: true,
|
||||
}],
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
path: 'crop'
|
||||
}
|
||||
}, {
|
||||
userAdded: true,
|
||||
name: 'Set aspect ratio to 21:9 (2.39:1)',
|
||||
label: '21:9',
|
||||
cmd: [{
|
||||
action: 'set-ar',
|
||||
arg: AspectRatioType.Fixed,
|
||||
customArg: 2.39
|
||||
}],
|
||||
scopes: {
|
||||
page: {
|
||||
show: true,
|
||||
shortcut: [{
|
||||
key: 'd',
|
||||
code: 'KeyD',
|
||||
ctrlKey: false,
|
||||
metaKey: false,
|
||||
altKey: false,
|
||||
shiftKey: false,
|
||||
onKeyUp: false,
|
||||
onKeyDown: true,
|
||||
}]
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
path: 'crop'
|
||||
}
|
||||
}, {
|
||||
userAdded: true,
|
||||
name: 'Set aspect ratio to 18:9',
|
||||
label: '18:9',
|
||||
cmd: [{
|
||||
action: 'set-ar',
|
||||
arg: AspectRatioType.Fixed,
|
||||
customArg: 2.0,
|
||||
}],
|
||||
scopes: {
|
||||
page: {
|
||||
show: true,
|
||||
shortcut: [{
|
||||
key: 'x',
|
||||
code: 'KeyX',
|
||||
ctrlKey: false,
|
||||
metaKey: false,
|
||||
altKey: false,
|
||||
shiftKey: false,
|
||||
onKeyUp: true,
|
||||
onKeyDown: false,
|
||||
}]
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
path: 'crop',
|
||||
}
|
||||
}, {
|
||||
name: 'Don\'t persist crop',
|
||||
label: 'Never persist',
|
||||
cmd: [{
|
||||
action: 'set-ar-persistence',
|
||||
arg: CropModePersistence.Disabled,
|
||||
}],
|
||||
scopes: {
|
||||
site: {
|
||||
show: true,
|
||||
},
|
||||
global: {
|
||||
show: true,
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
}
|
||||
}, {
|
||||
name: 'Persist crop while on page',
|
||||
label: 'Until page load',
|
||||
cmd: [{
|
||||
action: 'set-ar-persistence',
|
||||
arg: CropModePersistence.UntilPageReload,
|
||||
}],
|
||||
scopes: {
|
||||
site: {
|
||||
show: true,
|
||||
},
|
||||
global: {
|
||||
show: true,
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
}
|
||||
}, {
|
||||
name: 'Persist crop for current session',
|
||||
label: 'Current session',
|
||||
cmd: [{
|
||||
action: 'set-ar-persistence',
|
||||
arg: CropModePersistence.CurrentSession,
|
||||
}],
|
||||
scopes: {
|
||||
site: {
|
||||
show: true,
|
||||
},
|
||||
global: {
|
||||
show: true,
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
}
|
||||
}, {
|
||||
name: 'Persist until manually reset',
|
||||
label: 'Always persist',
|
||||
cmd: [{
|
||||
action: 'set-ar-persistence',
|
||||
arg: CropModePersistence.Forever,
|
||||
}],
|
||||
scopes: {
|
||||
site: {
|
||||
show: true,
|
||||
},
|
||||
global: {
|
||||
show: true,
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
}
|
||||
}, {
|
||||
name: 'Default crop persistence',
|
||||
label: 'Default',
|
||||
cmd: [{
|
||||
action: 'set-ar-persistence',
|
||||
arg: CropModePersistence.Default,
|
||||
}],
|
||||
scopes: {
|
||||
site: {
|
||||
show: true,
|
||||
},
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
}
|
||||
}, {
|
||||
name: 'Zoom in',
|
||||
label: 'Zoom',
|
||||
cmd: [{
|
||||
action: 'change-zoom',
|
||||
arg: 0.1
|
||||
}],
|
||||
scopes: {
|
||||
page: {
|
||||
show: false,
|
||||
shortcut: [{
|
||||
key: 'z',
|
||||
code: 'KeyY',
|
||||
ctrlKey: false,
|
||||
metaKey: false,
|
||||
altKey: false,
|
||||
shiftKey: false,
|
||||
onKeyUp: true,
|
||||
onKeyDown: false,
|
||||
}],
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: false,
|
||||
}
|
||||
}, {
|
||||
name: 'Zoom out',
|
||||
label: 'Unzoom',
|
||||
cmd: [{
|
||||
action: 'change-zoom',
|
||||
arg: -0.1
|
||||
}],
|
||||
scopes: {
|
||||
page: {
|
||||
show: false,
|
||||
shortcut: [{
|
||||
key: 'u',
|
||||
code: 'KeyU',
|
||||
ctrlKey: false,
|
||||
metaKey: false,
|
||||
altKey: false,
|
||||
shiftKey: false,
|
||||
onKeyUp: true,
|
||||
onKeyDown: false,
|
||||
}],
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: false
|
||||
}
|
||||
}, {
|
||||
name: 'Toggle panning mode',
|
||||
label: 'Toggle pan',
|
||||
cmd: [{
|
||||
action: 'toggle-pan',
|
||||
arg: 'toggle'
|
||||
}],
|
||||
playerUi: {
|
||||
show: true,
|
||||
path: 'zoom'
|
||||
},
|
||||
scopes: {
|
||||
}
|
||||
}, {
|
||||
name: 'Hold to pan',
|
||||
cmd: [{
|
||||
action: 'pan',
|
||||
arg: 'toggle',
|
||||
}],
|
||||
scopes: {
|
||||
page: {
|
||||
show: false,
|
||||
shortcut: [{
|
||||
ctrlKey: false,
|
||||
metaKey: false,
|
||||
altKey: false,
|
||||
shiftKey: true,
|
||||
onKeyDown: false,
|
||||
onKeyUp: false,
|
||||
onMouseMove: true,
|
||||
}],
|
||||
}
|
||||
}
|
||||
},
|
||||
//
|
||||
// S T R E T C H I N G
|
||||
//
|
||||
{
|
||||
name: 'Set stretch to "none"',
|
||||
label: 'Don\'t stretch',
|
||||
cmd: [{
|
||||
action: 'set-stretch',
|
||||
arg: StretchType.NoStretch,
|
||||
}],
|
||||
scopes: {
|
||||
global: {
|
||||
show: true,
|
||||
label: 'Normal'
|
||||
},
|
||||
site: {
|
||||
show: true,
|
||||
label: 'Normal'
|
||||
},
|
||||
page: {
|
||||
show: true,
|
||||
label: 'Normal'
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
path: 'stretch'
|
||||
}
|
||||
}, {
|
||||
name: 'Set stretch to "basic"',
|
||||
label: 'Basic stretch',
|
||||
cmd: [{
|
||||
action: 'set-stretch',
|
||||
arg: StretchType.Basic,
|
||||
}],
|
||||
scopes: {
|
||||
global: {
|
||||
show: true,
|
||||
label: 'Basic'
|
||||
},
|
||||
site: {
|
||||
show: true,
|
||||
label: 'Basic'
|
||||
},
|
||||
page: {
|
||||
show: true,
|
||||
label: 'Basic'
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
path: 'stretch'
|
||||
}
|
||||
}, {
|
||||
name: 'Set stretch to "hybrid"',
|
||||
label: 'Hybrid stretch',
|
||||
cmd: [{
|
||||
action: 'set-stretch',
|
||||
arg: StretchType.Hybrid,
|
||||
}],
|
||||
scopes: {
|
||||
global: {
|
||||
show: true,
|
||||
label: 'Hybrid'
|
||||
},
|
||||
site: {
|
||||
show: true,
|
||||
label: 'Hybrid'
|
||||
},
|
||||
page: {
|
||||
show: true,
|
||||
label: 'Hybrid'
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
path: 'stretch'
|
||||
}
|
||||
}, {
|
||||
name: 'Stretch only to hide thin borders',
|
||||
label: 'Thin borders only',
|
||||
cmd: [{
|
||||
action: 'set-stretch',
|
||||
arg: StretchType.Conditional,
|
||||
}],
|
||||
scopes: {
|
||||
global: {
|
||||
show: true,
|
||||
label: 'Thin borders'
|
||||
},
|
||||
site: {
|
||||
show: true,
|
||||
label: 'Thin borders'
|
||||
},
|
||||
page: {
|
||||
show: true,
|
||||
label: 'Thin borders'
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
path: 'stretch'
|
||||
}
|
||||
}, {
|
||||
name: 'Set stretch to default value',
|
||||
label: 'Default',
|
||||
cmd: [{
|
||||
action: 'set-stretch',
|
||||
arg: StretchType.Default,
|
||||
}],
|
||||
scopes: {
|
||||
site: {
|
||||
show: true,
|
||||
}
|
||||
}
|
||||
}, {
|
||||
name: 'Stretch source to 4:3',
|
||||
label: '4:3 stretch (src)',
|
||||
cmd: [{
|
||||
action: 'set-stretch',
|
||||
arg: StretchType.FixedSource,
|
||||
customArg: 1.33,
|
||||
}],
|
||||
scopes: {
|
||||
page: {
|
||||
show: true,
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
path: 'crop'
|
||||
}
|
||||
}, {
|
||||
name: 'Stretch source to 16:9',
|
||||
label: '16:9 stretch (src)',
|
||||
cmd: [{
|
||||
action: 'set-stretch',
|
||||
arg: StretchType.FixedSource,
|
||||
customArg: 1.77,
|
||||
}],
|
||||
scopes: {
|
||||
page: {
|
||||
show: true,
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
path: 'crop'
|
||||
}
|
||||
},
|
||||
//
|
||||
// A L I G N M E N T
|
||||
//
|
||||
{
|
||||
name: 'Align video to the left',
|
||||
label: 'Left',
|
||||
cmd: [{
|
||||
action: 'set-alignment',
|
||||
arg: VideoAlignmentType.Left,
|
||||
}],
|
||||
scopes: {
|
||||
global: {
|
||||
show: true,
|
||||
},
|
||||
site: {
|
||||
show: true,
|
||||
},
|
||||
page: {
|
||||
show: true,
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
path: 'align'
|
||||
}
|
||||
}, {
|
||||
name: 'Align video to center',
|
||||
label: 'Center',
|
||||
cmd: [{
|
||||
action: 'set-alignment',
|
||||
arg: VideoAlignmentType.Center,
|
||||
}],
|
||||
scopes: {
|
||||
global: {
|
||||
show: true,
|
||||
},
|
||||
site: {
|
||||
show: true,
|
||||
},
|
||||
page: {
|
||||
show: true,
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
path: 'align'
|
||||
}
|
||||
}, {
|
||||
name: 'Align video to the right',
|
||||
label: 'Right',
|
||||
cmd: [{
|
||||
action: 'set-alignment',
|
||||
arg: VideoAlignmentType.Right
|
||||
}],
|
||||
scopes: {
|
||||
global: {
|
||||
show: true,
|
||||
},
|
||||
site: {
|
||||
show: true,
|
||||
},
|
||||
page: {
|
||||
show: true,
|
||||
}
|
||||
},
|
||||
playerUi: {
|
||||
show: true,
|
||||
path: 'align'
|
||||
}
|
||||
}, {
|
||||
name: 'Use default alignment',
|
||||
label: 'Default',
|
||||
cmd: [{
|
||||
action: 'set-alignment',
|
||||
arg: VideoAlignmentType.Default
|
||||
}],
|
||||
scopes: {
|
||||
site: {
|
||||
show: true,
|
||||
}
|
||||
}
|
||||
},
|
||||
//
|
||||
// E N A B L E E X T E N S I O N / A U T O A R
|
||||
// (for sites/extension tab in the popup)
|
||||
//
|
||||
{
|
||||
name: 'Enable extension',
|
||||
label: 'Enable',
|
||||
cmd: [{
|
||||
action: 'set-extension-mode',
|
||||
arg: ExtensionMode.Enabled,
|
||||
persistent: true,
|
||||
}],
|
||||
scopes: {
|
||||
global: {
|
||||
show: true,
|
||||
},
|
||||
site: {
|
||||
show: true,
|
||||
}
|
||||
}
|
||||
}, {
|
||||
name: 'Enable extension on whitelisted sites only',
|
||||
label: 'On whitelist only',
|
||||
cmd: [{
|
||||
action: 'set-extension-mode',
|
||||
arg: ExtensionMode.Whitelist,
|
||||
persistent: true,
|
||||
}],
|
||||
scopes: {
|
||||
global: {
|
||||
show: true
|
||||
}
|
||||
}
|
||||
}, {
|
||||
name: 'Extension mode: use default settings',
|
||||
label: 'Default',
|
||||
cmd: [{
|
||||
action: 'set-extension-mode',
|
||||
arg: ExtensionMode.Default,
|
||||
persistent: true,
|
||||
}],
|
||||
scopes: {
|
||||
site: {
|
||||
show: true
|
||||
}
|
||||
}
|
||||
}, {
|
||||
name: 'Disable extension',
|
||||
label: 'Disable',
|
||||
cmd: [{
|
||||
action: 'set-extension-mode',
|
||||
arg: ExtensionMode.Disabled,
|
||||
persistent: true,
|
||||
}],
|
||||
scopes: {
|
||||
global: {
|
||||
show: true,
|
||||
},
|
||||
site: {
|
||||
show: true,
|
||||
}
|
||||
}
|
||||
}, {
|
||||
name: 'Enable automatic aspect ratio detection',
|
||||
label: 'Enable',
|
||||
cmd: [{
|
||||
action: 'set-autoar-mode',
|
||||
arg: ExtensionMode.Enabled,
|
||||
persistent: true,
|
||||
}],
|
||||
scopes: {
|
||||
global: {
|
||||
show: true
|
||||
},
|
||||
site: {
|
||||
show: true
|
||||
}
|
||||
}
|
||||
}, {
|
||||
name: 'Enable automatic aspect ratio detection on whitelisted sites only',
|
||||
label: 'On whitelist only',
|
||||
cmd: [{
|
||||
action: 'set-autoar-mode',
|
||||
arg: ExtensionMode.Whitelist,
|
||||
persistent: true,
|
||||
}],
|
||||
scopes: {
|
||||
global: {
|
||||
show: true,
|
||||
}
|
||||
}
|
||||
}, {
|
||||
name: 'Use default settings for automatic aspect ratio detection',
|
||||
label: 'Default',
|
||||
cmd: [{
|
||||
action: 'set-autoar-mode',
|
||||
arg: ExtensionMode.Default,
|
||||
persistent: true,
|
||||
}],
|
||||
scopes: {
|
||||
site: {
|
||||
show: true,
|
||||
}
|
||||
}
|
||||
}, {
|
||||
name: 'Disable automatic aspect ratio detection',
|
||||
label: 'Disable',
|
||||
cmd: [{
|
||||
action: 'set-autoar-mode',
|
||||
arg: ExtensionMode.Disabled,
|
||||
persistent: true,
|
||||
}],
|
||||
scopes: {
|
||||
global: {
|
||||
show: true,
|
||||
},
|
||||
site: {
|
||||
show: true,
|
||||
}
|
||||
}
|
||||
},
|
||||
//
|
||||
//
|
||||
// Enable/disable keyboard shortcuts
|
||||
//
|
||||
{
|
||||
name: 'Enable keyboard shortcuts',
|
||||
label: 'Enable',
|
||||
cmd: [{
|
||||
action: 'set-keyboard',
|
||||
arg: ExtensionMode.Enabled,
|
||||
}],
|
||||
scopes: {
|
||||
global: {
|
||||
show: true,
|
||||
},
|
||||
site: {
|
||||
show: true,
|
||||
},
|
||||
page: {
|
||||
show: true,
|
||||
}
|
||||
}
|
||||
}, {
|
||||
name: 'Enable keyboard shortcuts on whitelisted sites only',
|
||||
label: 'On whitelist only',
|
||||
cmd: [{
|
||||
action: 'set-keyboard',
|
||||
arg: ExtensionMode.Whitelist,
|
||||
}],
|
||||
scopes: {
|
||||
global: {
|
||||
show: true
|
||||
},
|
||||
}
|
||||
}, {
|
||||
name: 'Keyboard shortcuts mode: use default settings',
|
||||
label: 'Default',
|
||||
cmd: [{
|
||||
action: 'set-keyboard',
|
||||
arg: ExtensionMode.Default,
|
||||
}],
|
||||
scopes: {
|
||||
site: {
|
||||
show: true
|
||||
}
|
||||
}
|
||||
}, {
|
||||
name: 'Disable keyboard shortcuts',
|
||||
label: 'Disable',
|
||||
cmd: [{
|
||||
action: 'set-keyboard',
|
||||
arg: ExtensionMode.Disabled,
|
||||
}],
|
||||
scopes: {
|
||||
global: {
|
||||
show: true,
|
||||
},
|
||||
site: {
|
||||
show: true,
|
||||
},
|
||||
page: {
|
||||
show: true,
|
||||
}
|
||||
}
|
||||
},
|
||||
],
|
||||
mitigations: {
|
||||
zoomLimit: {
|
||||
enabled: true,
|
||||
|
Loading…
Reference in New Issue
Block a user