{pref.displayName} |
{makeContentCell(PreferenceContext.Account, globalServer, inherit = pref.defaultValue)} |
{makeContentCell(PreferenceContext.Device, globalLocal, inherit = globalServer ?? inherit)} |
{makeContentCell(PreferenceContext.RoomAccount, roomServer, inherit = globalLocal ?? inherit)} |
{makeContentCell(PreferenceContext.RoomDevice, roomLocal, inherit = roomServer ?? inherit)} |
}
interface SettingsViewProps {
room: RoomStateStore
}
function getActiveCSSContext(client: Client, room: RoomStateStore): PreferenceContext {
if (room.localPreferenceCache.custom_css !== undefined) {
return PreferenceContext.RoomDevice
} else if (room.serverPreferenceCache.custom_css !== undefined) {
return PreferenceContext.RoomAccount
} else if (client.store.localPreferenceCache.custom_css !== undefined) {
return PreferenceContext.Device
} else {
return PreferenceContext.Account
}
}
const Monaco = lazy(() => import("../util/monaco.tsx"))
const CustomCSSInput = ({ setPref, room }: { setPref: SetPrefFunc, room: RoomStateStore }) => {
const client = use(ClientContext)!
const appliedContext = getActiveCSSContext(client, room)
const [context, setContext] = useState(appliedContext)
const getContextText = (context: PreferenceContext) => {
if (context === PreferenceContext.Account) {
return client.store.serverPreferenceCache.custom_css
} else if (context === PreferenceContext.Device) {
return client.store.localPreferenceCache.custom_css
} else if (context === PreferenceContext.RoomAccount) {
return room.serverPreferenceCache.custom_css
} else if (context === PreferenceContext.RoomDevice) {
return room.localPreferenceCache.custom_css
}
}
const origText = getContextText(context)
const [text, setText] = useState(origText ?? "")
const onChangeContext = (evt: React.ChangeEvent