@tencentcloud/roomkit-web-vue3
Version:
<h1 align="center"> TUIRoomKit</h1> Conference (TUIRoomKit) is a product suitable for multi-person audio and video conversation scenarios such as business meetings, webinars, and online education. By integrating this product, you can add room management,
42 lines (35 loc) • 1.14 kB
text/typescript
import i18n from '../../locales';
import { IRoomService, EventType } from '../types';
interface IConfigManager {
setTheme(theme: Theme): void;
setLanguage(language: LanguageOption): void;
}
export type LanguageOption = 'zh-CN' | 'en-US';
export type Theme = 'light' | 'dark';
const THEME = {
LIGHT: 'light',
DARK: 'dark',
};
export class ConfigManager implements IConfigManager {
private service: IRoomService;
constructor(service: IRoomService) {
this.service = service;
}
public setTheme(theme: Theme) {
const isDarkTheme = theme === THEME.DARK;
document.body.classList.toggle(`tui-theme-${THEME.DARK}`, isDarkTheme);
document.body.classList.toggle(`tui-theme-${THEME.LIGHT}`, !isDarkTheme);
this.service.basicStore.setDefaultTheme(
isDarkTheme ? THEME.DARK : THEME.LIGHT
);
this.service.emit(
EventType.THEME_CHANGED,
isDarkTheme ? THEME.DARK : THEME.LIGHT
);
}
public setLanguage(language: LanguageOption) {
i18n.global.locale.value = language;
this.service.basicStore.setLang(language);
this.service.emit(EventType.LANGUAGE_CHANGED, language);
}
}