When syncing a setting between windows, if that setting has any
side effects, a trigger is fired in all other windows to perform
those side effects in their own environment.
Previously, a custom Map was provided to the function in order to
determine whether or not a setting contained side effects that needed
to be handled.
That Map has now been deleted and the function has been modified
to make use of the module's new architecture.
Previously, the settings' module was not properly equipped to handle
setting updates that featured certain side effects and no way to
propagate those side effects to other windows.
This redesign is a direct answer to those needs, in preparation to
move these settings and related logic to the aproppriate structures,
which will be done over the course of several commits.
A more in-depth documentation of the current redesign can be found at
the top of the settings module file.
The app utilizes the Electron IPC to communicate settings' updates
to the other existing windows.
This is still at a fairly rudimentary stage, since some settings are
not syncing at all, while other settings have related side effects that
are not currently being propagated to the remaining windows.
An example of this would be the 'uiScale' setting, in which
the value is properly synced, but the app's actual scaling isn't.
This fixes a bug related to the presentation of the `defaultVolume`
value in its respective label in the Settings view.
Since the value stored in the database and in the in-memory store
is a decimal number, it is subject to floating point arithmetic related
limitations.
Example (processed by the V8 engine):
0.28 * 100 = 28.000000000000004
This commit removes duplicated handler logic related to the app's
'ready' event. In addition, it rearranges the template used to build the
app's menu in order to make it a bit easier to understand.
This function made use of a switch statement that was hundred of
lines in height and a majority of cases had similar logic.
This commit generalizes the logic of the majority of the cases into
a condensed for loop, which additionally handles the few existing
oddball cases in an easy-to-understand manner.
The 'grabUserSettings' action calls the 'updateInvidiousInstance'
action whenever the database returns an empty value for this setting.
However, that scenario should never happen in the first place.
In addition, a default value is already provided directly in the state.
The settings' store module has had a lot of duplicated logic for
the majority of its getters, mutations and actions.
This commit serves to remedy that duplication substantially
by auto generating all getters, mutations and the majority
of actions, using a predictable pattern.
* * Update Youtube URL handling to recongnize playlist ID in URL
Only for format of `https://www.youtube.com/watch?v=vid&list=lid`
* ! Fix vue component prop declaration
A prop where the value can be undefined cannot be declared "required"
* Added toggle component to settings
* Setting to toggle this feature is now functional. Video volume can now be changed by scrolling anywhere on the video, or just on the slider, depending on this setting
* Added translation lines for en_US and en_GB
* Changed setting line from 'Scroll Volume Over Video' to 'Scroll Volume Over Video Player'
* Changed 'mousewheel' to 'wheel' event, as 'mousewheel' is deprecated
* Ran lint check in settings.js
Co-authored-by: Alex Stewart <albinexotech@gmail.com>
* ! Fix app unable to load due to missing `getLocale` in `mapActions`
* $ Update a function's name with incorrect name casing
* Update "open youtube link" button to open with playlist when playing a video with an active playlist
The `remote` module is deprecated and `@electron/remote` is unnecessary,
since the `ipcMain` and `ipcRenderer` can replace their functionality,
providing better performance and better security.
All other dangerous calls (mainly pulling main process constructs into
the renderer process) have also been removed.
Closes: #1299
Previously, the app would notified the user (with a toast) of a
sponsor segment skip repeatedly if the segment lasted
until the end of a video.
This commit fixes that behavior so that it's displayed only once.
Closes: #1268
Having 'system' locale set would wrongfully send the wrong
locale information to YouTube, which would result in the captions
not being set properly. This commit fixes that behavior.
This prevents the CONSENT cookie from being deleted after a window
is closed by the user, making it so that the user can no
longer load the comment section.