| import DependenciesProviderSingleton, { |
| OptionsProviderDependency, |
| StartupDataStorageDependency, |
| } from '../../../common/architecture/dependenciesProvider/DependenciesProvider'; |
| import Script, { |
| ScriptEnvironment, |
| ScriptPage, |
| ScriptRunPhase, |
| } from '../../../common/architecture/scripts/Script'; |
| |
| const SMEI_RCE_THREAD_INTEROP = 22; |
| |
| export default class SetThreadPageInDataStartupScript extends Script { |
| page = ScriptPage.CommunityConsole; |
| environment = ScriptEnvironment.ContentScript; |
| runPhase = ScriptRunPhase.Start; |
| |
| async execute() { |
| const dependenciesProvider = DependenciesProviderSingleton.getInstance(); |
| const optionsProvider = dependenciesProvider.getDependency( |
| OptionsProviderDependency, |
| ); |
| if (await optionsProvider.isEnabled('interopthreadpage')) { |
| const startupDataStorage = dependenciesProvider.getDependency( |
| StartupDataStorageDependency, |
| ); |
| const mode = await optionsProvider.getOptionValue( |
| 'interopthreadpage_mode', |
| ); |
| startupDataStorage.enqueueModification((startupDataModel) => { |
| const index = startupDataModel.data[1][6].indexOf( |
| SMEI_RCE_THREAD_INTEROP, |
| ); |
| |
| switch (mode) { |
| case 'previous': |
| if (index > -1) { |
| startupDataModel.data[1][6].splice(index, 1); |
| } |
| break; |
| |
| case 'next': |
| if (index == -1) { |
| startupDataModel.data[1][6].push(SMEI_RCE_THREAD_INTEROP); |
| } |
| break; |
| } |
| }); |
| // NOTE: Workaround because otherwise the modifications would be applied too late. |
| startupDataStorage.applyModifications(); |
| } |
| } |
| } |