From 9dfbd56e64da94de495b21c75a28864166204e70 Mon Sep 17 00:00:00 2001 From: Jan Kessler Date: Mon, 22 Apr 2024 17:40:53 +0200 Subject: [PATCH] init server tags prototype with config variable and corresponding dropdown in room settings --- .../rooms/room/room_settings/RoomSettings.jsx | 26 ++++++++++++++++++- app/models/application_record.rb | 4 +++ esbuild.dev.mjs | 4 ++- esbuild.mjs | 2 ++ 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/app/javascript/components/rooms/room/room_settings/RoomSettings.jsx b/app/javascript/components/rooms/room/room_settings/RoomSettings.jsx index 159f8ed3030..c4d1c67234d 100644 --- a/app/javascript/components/rooms/room/room_settings/RoomSettings.jsx +++ b/app/javascript/components/rooms/room/room_settings/RoomSettings.jsx @@ -16,7 +16,7 @@ import React from 'react'; import { - Row, Col, Button, Stack, + Row, Col, Button, Stack, Dropdown, } from 'react-bootstrap'; import { useParams } from 'react-router-dom'; import Card from 'react-bootstrap/Card'; @@ -33,6 +33,7 @@ import { useAuth } from '../../../../contexts/auth/AuthProvider'; import UpdateRoomNameForm from './forms/UpdateRoomNameForm'; import useRoom from '../../../../hooks/queries/rooms/useRoom'; import UnshareRoom from './UnshareRoom'; +import SimpleSelect from '../../../shared_components/utilities/SimpleSelect'; export default function RoomSettings() { const { t } = useTranslation(); @@ -45,6 +46,12 @@ export default function RoomSettings() { const updateMutationWrapper = () => useUpdateRoomSetting(friendlyId); const deleteMutationWrapper = (args) => useDeleteRoom({ friendlyId, ...args }); + const serverTagsMap = (process.env.SERVER_TAGS_MAP || '').split(",").reduce((map, pair) => { + let [key, value] = pair.split(":"); + map[key] = value; + return map; + }, {}); + return (
@@ -66,6 +73,23 @@ export default function RoomSettings() { config={roomConfigs?.glModeratorAccessCode} description={t('room.settings.generate_mods_access_code')} /> + + + { + + + } + + { + + { Object.values(serverTagsMap)[0] } + + } + +
{ t('room.settings.user_settings') }
diff --git a/app/models/application_record.rb b/app/models/application_record.rb index 4d10c2837b5..ba383fde14e 100644 --- a/app/models/application_record.rb +++ b/app/models/application_record.rb @@ -23,4 +23,8 @@ class ApplicationRecord < ActiveRecord::Base def virus_scan? ENV.fetch('CLAMAV_SCANNING', 'false') == 'true' end + + def server_tags_hash + ENV.fetch('SERVER_TAGS_MAP', '').split(",").map { |pair| pair.split(":") }.to_h + end end diff --git a/esbuild.dev.mjs b/esbuild.dev.mjs index ded76ccc133..e1b434c3655 100644 --- a/esbuild.dev.mjs +++ b/esbuild.dev.mjs @@ -2,6 +2,7 @@ import * as esbuild from 'esbuild'; // Fetch 'RELATIVE_URL_ROOT' ENV variable value while removing any trailing slashes. const relativeUrlRoot = (process.env.RELATIVE_URL_ROOT || '').replace(/\/*$/, ''); +const serverTagsMap = (process.env.SERVER_TAGS_MAP || ''); esbuild.context({ entryPoints: ['app/javascript/main.jsx'], @@ -15,6 +16,7 @@ esbuild.context({ define: { 'process.env.RELATIVE_URL_ROOT': `"${relativeUrlRoot}"`, 'process.env.OMNIAUTH_PATH': `"${relativeUrlRoot}/auth/openid_connect"`, // currently, only OIDC is implemented + 'process.env.SERVER_TAGS_MAP': `"${serverTagsMap}"`, }, }).then(context => { if (process.argv.includes("--watch")) { @@ -30,4 +32,4 @@ esbuild.context({ }).catch((e) => { console.error('build failed:', e); process.exit(1) -}) \ No newline at end of file +}) diff --git a/esbuild.mjs b/esbuild.mjs index e9aa8a45e19..f258ee00075 100644 --- a/esbuild.mjs +++ b/esbuild.mjs @@ -2,6 +2,7 @@ import * as esbuild from 'esbuild'; // Fetch 'RELATIVE_URL_ROOT' ENV variable value while removing any trailing slashes. const relativeUrlRoot = (process.env.RELATIVE_URL_ROOT || '').replace(/\/*$/, ''); +const serverTagsMap = (process.env.SERVER_TAGS_MAP || ''); await esbuild.build({ entryPoints: ['app/javascript/main.jsx'], @@ -15,6 +16,7 @@ await esbuild.build({ define: { 'process.env.RELATIVE_URL_ROOT': `"${relativeUrlRoot}"`, 'process.env.OMNIAUTH_PATH': `"${relativeUrlRoot}/auth/openid_connect"`, // currently, only OIDC is implemented + 'process.env.SERVER_TAGS_MAP': `"${serverTagsMap}"`, }, });