Skip to content

Commit adb878e

Browse files
committed
feat: syncronize repo selector instances
1 parent 706c038 commit adb878e

4 files changed

Lines changed: 24 additions & 8 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
All notable changes to the "commit-message-editor" extension will be documented in this file.
44

5+
## [Unreleased]
6+
7+
### Fixed
8+
9+
- Snycronize repository selector instances.
10+
511
## [0.24.2] - 2023-05-08
612

713
### Fixed

frontend/src/components/cme-repo-selector.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import '@bendera/vscode-webview-elements/dist/vscode-icon';
66
import '@bendera/vscode-webview-elements/dist/vscode-single-select';
77
import '@bendera/vscode-webview-elements/dist/vscode-option';
88
import store, {RootState} from '../store/store';
9+
import {changeSelectedRepository} from '../store/actions';
910

1011
@customElement('cme-repo-selector')
1112
export class RepoSelector extends connect(store)(LitElement) {
@@ -43,13 +44,14 @@ export class RepoSelector extends connect(store)(LitElement) {
4344
private _handleChange(
4445
ev: CustomEvent<{selectedIndex: number; value: string}>
4546
) {
46-
this._selectedRepositoryPath = ev.detail.value;
47-
47+
const path = ev.detail.value;
4848
const changeEvent = new CustomEvent('cme-change', {
49-
detail: ev.detail.value,
49+
detail: path,
5050
});
5151

52+
this._selectedRepositoryPath = path;
5253
this.dispatchEvent(changeEvent);
54+
store.dispatch(changeSelectedRepository(path));
5355
}
5456

5557
static get styles(): CSSResult {
@@ -72,13 +74,13 @@ export class RepoSelector extends connect(store)(LitElement) {
7274
return html`<div class="repo-info">
7375
<vscode-icon name="repo"></vscode-icon>&nbsp;
7476
<b>Selected repository:</b>&nbsp;
75-
<vscode-single-select @vsc-change=${this._handleChange}>
77+
<vscode-single-select
78+
@vsc-change=${this._handleChange}
79+
.value=${this._selectedRepositoryPath}
80+
>
7681
${this._availableRepositories.map(
7782
(r) =>
78-
html`<vscode-option
79-
description=${r}
80-
value=${r}
81-
?selected=${this._selectedRepositoryPath === r}
83+
html`<vscode-option description=${r} value=${r}
8284
>${this._getNameFromPath(r)}</vscode-option
8385
>`
8486
)}

frontend/src/store/actions.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export const CONFIRM_AMEND = 'CONFIRM_AMEND';
1010
export const COPY_TO_SCM_INPUT_BOX = 'COPY_TO_SCM_INPUT_BOX';
1111
export const REPOSITORY_INFO_RECEIVED = 'REPOSITORY_INFO_RECEIVED';
1212
export const UPDATE_TOKEN_VALUES = 'UPDATE_TOKEN_VALUES';
13+
export const CHANGE_SELECTED_REPOSITORY = 'CHANGE_SELECTED_REPOSITORY';
1314

1415
export const IMPORT_CONFIG = 'IMPORT_CONFIG';
1516
export const SHAREABLE_CONFIG_CHANGED = 'SHAREABLE_CONFIG_CHANGED';
@@ -46,6 +47,9 @@ export const receiveRepositoryInfo = createAction<RepositoryInfo>(
4647
export const updateTokenValues = createAction<{[key: string]: string}>(
4748
UPDATE_TOKEN_VALUES
4849
);
50+
export const changeSelectedRepository = createAction<string>(
51+
CHANGE_SELECTED_REPOSITORY
52+
);
4953

5054
export const importConfig = createAction(IMPORT_CONFIG);
5155
export const shareableConfigChange = createAction<ShareableConfig>(

frontend/src/store/reducers.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
TEXTAREA_VALUE_CHANGED,
1616
UPDATE_TOKEN_VALUES,
1717
CHANGE_STATUS_MESSAGE,
18+
CHANGE_SELECTED_REPOSITORY,
1819
} from './actions';
1920

2021
export const createInitialState = (): RootState => ({
@@ -94,6 +95,9 @@ export const rootReducer = createReducer(initialState, {
9495
const {payload} = action;
9596
state.tokenValues = payload;
9697
},
98+
[CHANGE_SELECTED_REPOSITORY]: (state: RootState, action) => {
99+
state.selectedRepositoryPath = action.payload as string;
100+
},
97101
[SHAREABLE_CONFIG_CHANGED]: (state: RootState, action) => {
98102
const {payload} = action;
99103
const {staticTemplate = '', dynamicTemplate = '', tokens = []} = payload;

0 commit comments

Comments
 (0)