Skip to content
This repository was archived by the owner on Jul 30, 2025. It is now read-only.

Commit b146efb

Browse files
myan9starpit
authored andcommitted
fix(plugins/plugin-sidecar): regressions about defaultMode and order
Fixes #3710 Fixes #3709
1 parent f8139ac commit b146efb

File tree

3 files changed

+11
-6
lines changed

3 files changed

+11
-6
lines changed

clients/test/plugins/plugin-test/src/lib/modes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ export const mode5 = {
8282
label: 'mode5 label',
8383
content: () => ({
8484
contentFrom: 'test string',
85+
order: 999,
8586
contentType: 'text/plain' as const
8687
})
8788
}

clients/test/plugins/plugin-test/src/preload.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { mode1, mode2, mode3, button, mode5, badge1, badge2 } from './lib/modes'
2020

2121
export default async (registrar: PreloadRegistrar) => {
2222
if (!isHeadless()) {
23-
registrar.registerModes(mode1, mode2, mode3, button, mode5)
23+
registrar.registerModes(button, mode1, mode2, mode5, mode3)
2424
registrar.registerBadges(badge1, badge2)
2525
}
2626
}

plugins/plugin-sidecar/src/view/components/TopNavSidecar.tsx

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ interface State extends BaseState {
4747
}
4848

4949
export function getStateFromMMR(tab: KuiTab, response: MultiModalResponse): State {
50-
const allModes = response.modes.slice(0)
50+
let allModes = response.modes.slice(0)
5151

5252
// consult the view registrar for registered view modes
5353
// relevant to this resource
@@ -58,16 +58,20 @@ export function getStateFromMMR(tab: KuiTab, response: MultiModalResponse): Stat
5858
addRelevantModes(tab, allModes, command, response)
5959
}
6060

61+
// obey the `order` constraints of the modes
62+
allModes = allModes.sort((a, b) => {
63+
return (a.order || 0) - (b.order || 0)
64+
})
65+
6166
// defaultMode: if the response specified one, then look for it;
6267
// otherwise, use the mode that considers itself default;
6368
// otherwise use the first
64-
const defaultModeFromResponse = response.defaultMode ? allModes.findIndex(_ => _.mode === response.defaultMode) : -1
69+
const tabs = allModes.filter(_ => !isButton(_))
70+
const defaultModeFromResponse = response.defaultMode ? tabs.findIndex(_ => _.mode === response.defaultMode) : -1
6571
const defaultModeFromModel =
66-
defaultModeFromResponse === -1 ? allModes.findIndex(_ => _.defaultMode) : defaultModeFromResponse
72+
defaultModeFromResponse === -1 ? tabs.findIndex(_ => _.defaultMode) : defaultModeFromResponse
6773
const defaultMode = defaultModeFromModel === -1 ? 0 : defaultModeFromModel
6874

69-
const tabs = allModes.filter(_ => !isButton(_))
70-
7175
// re: as any: yay tsc, there are several open issue for this;
7276
// it's related to isButton using generics
7377
const buttonsFromRegistrar: Button[] = (allModes.filter(isButton) as any) as Button[]

0 commit comments

Comments
 (0)