Skip to content

Commit 5cd2ae0

Browse files
authored
fix chargen model change in ui (#1081)
* fix chargen model change in ui * fix adapter config initial update * fix preset registered setting initial set - modal sizing - mobile input bar send on enter * sub level error * fix admin config page editing
1 parent 9e5ce28 commit 5cd2ae0

File tree

13 files changed

+36
-26
lines changed

13 files changed

+36
-26
lines changed

srv/api/upload.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { errors } from './wrap'
1111
const s3 = new S3({
1212
region: 'us-east-1',
1313
forcePathStyle: false,
14-
endpoint: `https://${config.storage.endpoint}`,
14+
endpoint: config.storage.endpoint ? `https://${config.storage.endpoint}` : undefined,
1515
credentials: {
1616
accessKeyId: config.storage.id,
1717
secretAccessKey: config.storage.key,
@@ -90,6 +90,10 @@ export async function upload(attachment: Attachment, name: string, ttl?: number)
9090
ContentType: attachment.type,
9191
ACL: 'public-read',
9292
})
93+
if (config.cdnHostname) {
94+
return `https://${config.cdnHostname}/assets/${filename}`
95+
}
96+
9397
return `/assets/` + filename
9498
}
9599

srv/config.ts

+1
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ export const config = {
6767
host: env('APP_HOST', '0.0.0.0'),
6868
port: +env('PORT', '3001'),
6969
assetUrl: env('ASSET_URL', ''),
70+
cdnHostname: env('CDN_HOSTNAME', ''),
7071
assetFolder: env('ASSET_FOLDER', resolve(__dirname, '..', 'dist', 'assets')),
7172
extraFolder: env('EXTRA_FOLDER', ''),
7273
billing: {

web/pages/Admin/Configuration.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ const ServerConfiguration: Component = () => {
2323
const [search, setSearch] = useSearchParams()
2424

2525
const state = adminStore()
26-
const tab = useTabs(['General', 'Images', 'Voice', 'Characters'], +(search.cfg_tab || '0'))
26+
const tab = useTabs(['General', 'Images', 'Voice'], +(search.cfg_tab || '0'))
2727

2828
createEffect(() => {
2929
setSearch({ cfg_tab: tab.selected().toString() })

web/pages/Chat/components/InputBar.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import { SpeechRecognitionRecorder } from './SpeechRecognitionRecorder'
3636
import { Toggle } from '/web/shared/Toggle'
3737
import { defaultCulture } from '/web/shared/CultureCodes'
3838
import { createDebounce } from '/web/shared/util'
39-
import { useDraft, useEffect } from '/web/shared/hooks'
39+
import { useDraft, useEffect, useMobileDetect } from '/web/shared/hooks'
4040
import { eventStore } from '/web/store/event'
4141
import { useAppContext } from '/web/store/context'
4242
import NoCharacterIcon from '/web/icons/NoCharacterIcon'
@@ -103,6 +103,7 @@ const InputBar: Component<{
103103
const [complete, setComplete] = createSignal(false)
104104
const [listening, setListening] = createSignal(false)
105105
const [dragging, setDragging] = createSignal(false)
106+
const mob = useMobileDetect()
106107

107108
const completeOpts = createMemo(() => {
108109
const list = ctx.activeBots.map((char) => ({ label: char.name, value: char._id }))
@@ -298,8 +299,7 @@ const InputBar: Component<{
298299
setComplete(true)
299300
}
300301

301-
const isMobileDevice = /Mobi/i.test(window.navigator.userAgent)
302-
const canMobileSend = isMobileDevice ? user.ui.mobileSendOnEnter : true
302+
const canMobileSend = mob() ? user.ui.mobileSendOnEnter : true
303303
if (ev.key === 'Enter' && !ev.shiftKey && canMobileSend) {
304304
if (complete()) return
305305
send()

web/pages/Settings/UISettings.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ const UISettings: Component<{}> = () => {
189189

190190
<Toggle
191191
fieldName="mobileSendOnEnter"
192-
label="Send Message on Enter on Mobile"
192+
label="Send on Enter on Mobile"
193193
helperText='Instead of adding a line break, "Enter" will send the message (Mobile only)'
194194
value={state.ui.mobileSendOnEnter}
195195
onChange={(ev) => userStore.saveUI({ mobileSendOnEnter: ev })}
@@ -388,7 +388,7 @@ const UISettings: Component<{}> = () => {
388388
<Divider />
389389
<div class="text-lg font-bold">Preview</div>
390390
<Show when={chars.characters.list.length > 0}>
391-
<div class="bg-100 flex w-full flex-col gap-2 rounded-md p-2">
391+
<div class="bg-600 flex w-full flex-col gap-2 rounded-md p-2">
392392
<Message
393393
index={-1}
394394
editing={false}

web/pages/Settings/components/RegisteredSettings.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ const RegisteredSettings: Component<{
2323
value={props.state.adapterConfig?.[props.service.name]?.[each.field]}
2424
config={props.state.adapterConfig?.[props.service.name]}
2525
onChange={(ev) => {
26-
const prev = { ...(props.state.adapterConfig as any)[props.service.name] }
26+
const prev = { ...(props.state.adapterConfig as any)?.[props.service.name] }
2727
prev[each.field] = ev
2828
const next = { ...props.state.adapterConfig, [props.service.name]: prev }
29-
props.setter('adapterConfig', next)
29+
props.setter({ adapterConfig: next })
3030
}}
3131
/>
3232
</Show>

web/shared/Modal.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,15 @@ const Modal: Component<Props> = (props) => {
4444
return (
4545
<Portal>
4646
<Show when={props.show}>
47-
<div class="fixed inset-x-0 top-0 z-[100] items-center justify-center px-4 sm:inset-0 sm:flex sm:items-center sm:justify-center">
47+
<div class="fixed inset-x-0 top-0 z-[100] items-center justify-center px-2 sm:inset-0 sm:flex sm:items-center sm:justify-center">
4848
<div class="fixed inset-0 -z-10 opacity-40 transition-opacity">
4949
<div class="absolute inset-0 bg-black" />
5050
</div>
5151
<div class="modal-body">
5252
<form
5353
ref={autofocus}
5454
onSubmit={props.onSubmit || defaultSubmit}
55-
class={`modal-height bg-900 z-50 w-[calc(100vw-16px)] overflow-hidden rounded-lg shadow-md shadow-black transition-all ${width()} `}
55+
class={`modal-height bg-900 z-50 w-[calc(100vw-0px)] overflow-hidden rounded-lg shadow-md shadow-black transition-all ${width()} `}
5656
classList={{ 'h-full': props.maxHeight, 'opacity-80': props.transparent }}
5757
role="dialog"
5858
aria-modal="true"

web/shared/PresetSettings/Agnaistic.tsx

+4
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ export const AgnaisticSettings: Field<{ noSave: boolean }> = (props) => {
2121
return
2222
}
2323
presetStore.updateRegisterPresetProp(props.state._id, 'agnaistic', 'subscriptionId', value)
24+
props.setter(
25+
'registered',
26+
applyStoreProperty(props.state.registered, 'agnaistic.subscriptionId', value)
27+
)
2428
}
2529

2630
createEffect(

web/shared/PresetSettings/Registered.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export const RegisteredSettings: Component<{
3636
onChange={(ev) => {
3737
if (!props.setter || !props.state) return
3838
if (!props.state.service) return
39-
const prev = { ...(props.state.registered as any)[props.state.service!] }
39+
const prev = { ...(props.state.registered as any)?.[props.state.service!] }
4040
prev[opt.field] = ev
4141
const next = { ...props.state.registered, [props.state.service]: prev }
4242
props.setter('registered', next)

web/shared/TextInput.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ const TextInput: Component<Props> = (props) => {
165165
// Therefore we must also monitor it on-input
166166
setTimeout(() => {
167167
if (props.value === undefined || !inputRef) return
168+
if (!props.onChange) return
168169
if (props.value.toString().trim() !== inputRef.value.toString().trim()) {
169170
inputRef.value = props.value.toString()
170171
}

web/shared/Toggle.tsx

+1-5
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,8 @@ export const Toggle: Component<{
3636

3737
return (
3838
<div
39-
class={`flex flex-col items-center gap-2 ${justify()}`}
39+
class={`flex flex-row items-center gap-2 ${justify()}`}
4040
classList={{
41-
'flex-col': props.vertLabel,
42-
'flex-row': !props.vertLabel,
43-
'sm:flex-row': !props.vertLabel,
44-
// 'sm:items-center': !props.vertLabel,
4541
'!gap-0': props.vertLabel && !props.class?.includes('gap-'),
4642
'gap-2': !props.vertLabel && !props.class?.includes('gap-'),
4743
hidden: props.hide ?? false,

web/store/character.ts

+8-8
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ export const characterStore = createStore<CharacterState>(
110110
async (chatId: string, chars: AppSchema.Character[], temps: AppSchema.Character[]) => {
111111
const allChars = chars.concat(temps)
112112
set({ chatChars: { chatId, list: allChars, map: toMap(allChars) } })
113-
characterStore.loadImpersonate()
113+
characterStore.loadImpersonate(chatId)
114114
}
115115
)
116116

@@ -200,14 +200,14 @@ export const characterStore = createStore<CharacterState>(
200200
return { impersonating: char || undefined }
201201
},
202202

203-
async loadImpersonate({
204-
activeChatId,
205-
chatChars: { list },
206-
characters: { list: allList },
207-
impersonating: current,
208-
}) {
203+
async loadImpersonate(
204+
{ activeChatId, chatChars: { list }, characters: { list: allList }, impersonating: current },
205+
chatId?: string
206+
) {
209207
const fallback = storage.localGetItem(IMPERSONATE_KEY) || ''
210-
let id = activeChatId ? getStoredValue(`${activeChatId}-impersonate`, fallback) : fallback
208+
let id = activeChatId
209+
? getStoredValue(`${chatId || activeChatId}-impersonate`, fallback)
210+
: fallback
211211

212212
if (!id) return
213213

web/store/user.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,11 @@ export const userStore = createStore<UserState>(
313313

314314
if (res.result) {
315315
const next = getUserSubscriptionTier(res.result.user, tiers, previous)
316-
yield { user: res.result.user, sub: next, userLevel: res.result.user.sub.level ?? 0 }
316+
yield {
317+
user: res.result.user,
318+
sub: next,
319+
userLevel: res.result.user.sub?.level ?? next?.level ?? 0,
320+
}
317321
}
318322

319323
if (quiet) return

0 commit comments

Comments
 (0)