mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-04-20 06:32:11 +00:00
226 lines
7.5 KiB
JavaScript
226 lines
7.5 KiB
JavaScript
// Copyright (C) 2017-2020 Smart code 203358507
|
|
|
|
const { useServices } = require('stremio/services');
|
|
const { CONSTANTS, languageNames, useDeepEqualMemo } = require('stremio/common');
|
|
|
|
const useProfileSettingsInputs = (profile) => {
|
|
const { core } = useServices();
|
|
const interfaceLanguageSelect = useDeepEqualMemo(() => ({
|
|
options: Object.keys(languageNames).map((code) => ({
|
|
value: code,
|
|
label: languageNames[code]
|
|
})),
|
|
selected: [profile.settings.interfaceLanguage],
|
|
onSelect: (event) => {
|
|
core.transport.dispatch({
|
|
action: 'Ctx',
|
|
args: {
|
|
action: 'UpdateSettings',
|
|
args: {
|
|
...profile.settings,
|
|
interfaceLanguage: event.value
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}), [profile.settings]);
|
|
const subtitlesLanguageSelect = useDeepEqualMemo(() => ({
|
|
options: Object.keys(languageNames).map((code) => ({
|
|
value: code,
|
|
label: languageNames[code]
|
|
})),
|
|
selected: [profile.settings.subtitlesLanguage],
|
|
onSelect: (event) => {
|
|
core.transport.dispatch({
|
|
action: 'Ctx',
|
|
args: {
|
|
action: 'UpdateSettings',
|
|
args: {
|
|
...profile.settings,
|
|
subtitlesLanguage: event.value
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}), [profile.settings]);
|
|
const subtitlesSizeSelect = useDeepEqualMemo(() => ({
|
|
options: CONSTANTS.SUBTITLES_SIZES.map((size) => ({
|
|
value: `${size}`,
|
|
label: `${size}%`
|
|
})),
|
|
selected: [`${profile.settings.subtitlesSize}`],
|
|
renderLabelText: () => {
|
|
return `${profile.settings.subtitlesSize}%`;
|
|
},
|
|
onSelect: (event) => {
|
|
core.transport.dispatch({
|
|
action: 'Ctx',
|
|
args: {
|
|
action: 'UpdateSettings',
|
|
args: {
|
|
...profile.settings,
|
|
subtitlesSize: parseInt(event.value, 10)
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}), [profile.settings]);
|
|
const subtitlesTextColorInput = useDeepEqualMemo(() => ({
|
|
value: profile.settings.subtitlesTextColor,
|
|
onChange: (event) => {
|
|
core.transport.dispatch({
|
|
action: 'Ctx',
|
|
args: {
|
|
action: 'UpdateSettings',
|
|
args: {
|
|
...profile.settings,
|
|
subtitlesTextColor: event.value
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}), [profile.settings]);
|
|
const subtitlesBackgroundColorInput = useDeepEqualMemo(() => ({
|
|
value: profile.settings.subtitlesBackgroundColor,
|
|
onChange: (event) => {
|
|
core.transport.dispatch({
|
|
action: 'Ctx',
|
|
args: {
|
|
action: 'UpdateSettings',
|
|
args: {
|
|
...profile.settings,
|
|
subtitlesBackgroundColor: event.value
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}), [profile.settings]);
|
|
const subtitlesOutlineColorInput = useDeepEqualMemo(() => ({
|
|
value: profile.settings.subtitlesOutlineColor,
|
|
onChange: (event) => {
|
|
core.transport.dispatch({
|
|
action: 'Ctx',
|
|
args: {
|
|
action: 'UpdateSettings',
|
|
args: {
|
|
...profile.settings,
|
|
subtitlesOutlineColor: event.value
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}), [profile.settings]);
|
|
const seekTimeDuration = useDeepEqualMemo(() => ({
|
|
options: CONSTANTS.SEEK_TIME_DURATIONS.map((size) => ({
|
|
value: `${size}`,
|
|
label: `${size / 1000}s`
|
|
})),
|
|
selected: [`${profile.settings.seekTimeDuration}`],
|
|
renderLabelText: () => {
|
|
return `${profile.settings.seekTimeDuration / 1000}s`;
|
|
},
|
|
onSelect: (event) => {
|
|
core.transport.dispatch({
|
|
action: 'Ctx',
|
|
args: {
|
|
action: 'UpdateSettings',
|
|
args: {
|
|
...profile.settings,
|
|
seekTimeDuration: parseInt(event.value, 10)
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}), [profile.settings]);
|
|
const bingeWatchingCheckbox = useDeepEqualMemo(() => ({
|
|
checked: profile.settings.bingeWatching,
|
|
onClick: () => {
|
|
core.transport.dispatch({
|
|
action: 'Ctx',
|
|
args: {
|
|
action: 'UpdateSettings',
|
|
args: {
|
|
...profile.settings,
|
|
bingeWatching: !profile.settings.bingeWatching
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}), [profile.settings]);
|
|
const playInBackgroundCheckbox = useDeepEqualMemo(() => ({
|
|
checked: profile.settings.playInBackground,
|
|
onClick: () => {
|
|
core.transport.dispatch({
|
|
action: 'Ctx',
|
|
args: {
|
|
action: 'UpdateSettings',
|
|
args: {
|
|
...profile.settings,
|
|
playInBackground: !profile.settings.playInBackground
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}), [profile.settings]);
|
|
const playInExternalPlayerCheckbox = useDeepEqualMemo(() => ({
|
|
checked: profile.settings.playInExternalPlayer,
|
|
onClick: () => {
|
|
core.transport.dispatch({
|
|
action: 'Ctx',
|
|
args: {
|
|
action: 'UpdateSettings',
|
|
args: {
|
|
...profile.settings,
|
|
playInExternalPlayer: !profile.settings.playInExternalPlayer
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}), [profile.settings]);
|
|
const hardwareDecodingCheckbox = useDeepEqualMemo(() => ({
|
|
checked: profile.settings.hardwareDecoding,
|
|
onClick: () => {
|
|
core.transport.dispatch({
|
|
action: 'Ctx',
|
|
args: {
|
|
action: 'UpdateSettings',
|
|
args: {
|
|
...profile.settings,
|
|
hardwareDecoding: !profile.settings.hardwareDecoding
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}), [profile.settings]);
|
|
const streamingServerUrlInput = useDeepEqualMemo(() => ({
|
|
value: profile.settings.streamingServerUrl,
|
|
onChange: (value) => {
|
|
core.transport.dispatch({
|
|
action: 'Ctx',
|
|
args: {
|
|
action: 'UpdateSettings',
|
|
args: {
|
|
...profile.settings,
|
|
streamingServerUrl: value
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}), [profile.settings]);
|
|
return {
|
|
interfaceLanguageSelect,
|
|
subtitlesLanguageSelect,
|
|
subtitlesSizeSelect,
|
|
subtitlesTextColorInput,
|
|
subtitlesBackgroundColorInput,
|
|
subtitlesOutlineColorInput,
|
|
seekTimeDuration,
|
|
bingeWatchingCheckbox,
|
|
playInBackgroundCheckbox,
|
|
playInExternalPlayerCheckbox,
|
|
hardwareDecodingCheckbox,
|
|
streamingServerUrlInput
|
|
};
|
|
};
|
|
|
|
module.exports = useProfileSettingsInputs;
|