fix(office): PDF am Telefon nur bei OnlyOffice, Collabora behält den Editor
Die Regel galt für beide Anbieter – das war falsch. Marcs Kritik betraf nur OnlyOffice: Es baut auf dem Telefon dieselbe Oberfläche auf wie am PC. Collabora bringt für kleine Schirme eine eigene Ansicht mit, die taugt; dort wäre der Umweg über ein PDF ein Rückschritt. Der Anbieter steht jetzt in der öffentlichen Konfiguration (office_provider), und die Oberfläche entscheidet daran. Der Endpunkt selbst kann weiterhin beides. Nachgeholt: Der ganze Weg ist jetzt auch mit Collabora gemessen, nicht nur mit OnlyOffice – gegen die Dev-Instanz, die damit läuft. erster Abruf 0,347 s, zweiter 0,009 s, eine Datei auf der Platte (OnlyOffice zum Vergleich: 1,05 s – es muss die Datei erst abholen) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
065372359b
commit
6c53651568
6 files changed
+57
-17
No files matched your search
@@ -25,6 +25,14 @@ interface AppSettingsValue {
|
||||
globalColors: { primary?: string; accent?: string }
|
||||
/** Gibt es einen Office-Server? Steuert nur, ob der Menuepunkt erscheint. */
|
||||
officeEnabled: boolean
|
||||
/**
|
||||
* Welcher Anbieter – 'collabora', 'onlyoffice' oder leer.
|
||||
*
|
||||
* Die Oberfläche braucht das, weil sich die beiden am Telefon verschieden
|
||||
* verhalten: Collabora hat eine eigene Handy-Ansicht, die taugt; OnlyOffice
|
||||
* baut dort dieselbe Oberfläche auf wie am PC.
|
||||
*/
|
||||
officeProvider: string
|
||||
/** Wie viele frühere Fassungen der Server aufhebt. Kommt vom Server, damit
|
||||
* der Dialog nicht eine andere Zahl nennt als die, die angewendet wird. */
|
||||
maxVersionsKept: number
|
||||
@@ -34,6 +42,7 @@ interface AppSettingsValue {
|
||||
const Ctx = createContext<AppSettingsValue>({
|
||||
cloudName: 'Aether',
|
||||
officeEnabled: false,
|
||||
officeProvider: '',
|
||||
maxVersionsKept: 5,
|
||||
logoUrl: '',
|
||||
faviconUrl: '',
|
||||
@@ -89,6 +98,7 @@ export function AppSettingsProvider({ children }: { children: ReactNode }) {
|
||||
const [appIconUrl, setAppIconUrl] = useState('')
|
||||
const [globalColors, setGlobalColors] = useState<{ primary?: string; accent?: string }>({})
|
||||
const [officeEnabled, setOfficeEnabled] = useState(false)
|
||||
const [officeProvider, setOfficeProvider] = useState('')
|
||||
const [maxVersionsKept, setMaxVersionsKept] = useState(5)
|
||||
|
||||
const refresh = useCallback(async () => {
|
||||
@@ -101,6 +111,7 @@ export function AppSettingsProvider({ children }: { children: ReactNode }) {
|
||||
applyFavicon(cfg.favicon_url ?? '', cfg.apple_touch_icon_url ?? '')
|
||||
setGlobalColors({ primary: cfg.primary_color, accent: cfg.accent_color })
|
||||
setOfficeEnabled(!!cfg.office_enabled)
|
||||
setOfficeProvider(cfg.office_provider ?? '')
|
||||
if (typeof cfg.max_versions_kept === 'number' && cfg.max_versions_kept > 0) {
|
||||
setMaxVersionsKept(cfg.max_versions_kept)
|
||||
}
|
||||
@@ -116,7 +127,7 @@ export function AppSettingsProvider({ children }: { children: ReactNode }) {
|
||||
useEffect(() => { void refresh() }, [refresh])
|
||||
|
||||
return (
|
||||
<Ctx.Provider value={{ cloudName, logoUrl, faviconUrl, appIconUrl, globalColors, officeEnabled, maxVersionsKept, refresh }}>{children}</Ctx.Provider>
|
||||
<Ctx.Provider value={{ cloudName, logoUrl, faviconUrl, appIconUrl, globalColors, officeEnabled, officeProvider, maxVersionsKept, refresh }}>{children}</Ctx.Provider>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user