Skip to content

Commit 0817d60

Browse files
refactor(iron-remote-desktop): use PartialObserver instead of single callback for onSessionEvent (#787)
1 parent ce7379b commit 0817d60

File tree

5 files changed

+36
-29
lines changed

5 files changed

+36
-29
lines changed

web-client/iron-remote-desktop/src/interfaces/UserInteraction.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type { NewSessionInfo } from './NewSessionInfo';
33
import type { SessionEvent } from './session-event';
44
import { ConfigBuilder } from '../services/ConfigBuilder';
55
import type { Config } from '../services/Config';
6+
import type { PartialObserver } from 'rxjs';
67

78
export interface UserInteraction {
89
setVisibility(state: boolean): void;
@@ -23,7 +24,7 @@ export interface UserInteraction {
2324

2425
setCursorStyleOverride(style: string | null): void;
2526

26-
onSessionEvent(callback: (event: SessionEvent) => void): void;
27+
onSessionEvent(partialObserver: PartialObserver<SessionEvent>): void;
2728

2829
resize(width: number, height: number, scale?: number): void;
2930

web-client/iron-remote-desktop/src/services/PublicAPI.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ export class PublicAPI {
6868
configBuilder: this.configBuilder.bind(this),
6969
connect: this.connect.bind(this),
7070
setScale: this.setScale.bind(this),
71-
onSessionEvent: (callback) => {
72-
this.remoteDesktopService.sessionObserver.subscribe(callback);
71+
onSessionEvent: (partialObserver) => {
72+
this.remoteDesktopService.sessionObserver.subscribe(partialObserver);
7373
},
7474
ctrlAltDel: this.ctrlAltDel.bind(this),
7575
metaKey: this.metaKey.bind(this),

web-client/iron-svelte-client/src/lib/login/login.svelte

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,22 @@
3030
});
3131
3232
const initListeners = () => {
33-
userInteraction.onSessionEvent((event) => {
34-
if (event.type === 2) {
35-
console.log('Error event', event.data);
33+
userInteraction.onSessionEvent({
34+
next: (event) => {
35+
if (event.type === 2) {
36+
console.log('Error event', event.data);
3637
37-
toast.set({
38-
type: 'error',
39-
message: typeof event.data !== 'string' ? event.data.backtrace() : event.data,
40-
});
41-
} else {
42-
toast.set({
43-
type: 'info',
44-
message: typeof event.data === 'string' ? event.data : event.data?.backtrace() ?? 'No info',
45-
});
46-
}
38+
toast.set({
39+
type: 'error',
40+
message: typeof event.data !== 'string' ? event.data.backtrace() : event.data,
41+
});
42+
} else {
43+
toast.set({
44+
type: 'info',
45+
message: typeof event.data === 'string' ? event.data : event.data?.backtrace() ?? 'No info',
46+
});
47+
}
48+
},
4749
});
4850
};
4951

web-client/iron-svelte-client/src/lib/popup-screen/popup-screen.svelte

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@
1212
userInteractionService.subscribe((val) => {
1313
if (val != null) {
1414
userInteraction = val;
15-
userInteraction.onSessionEvent((event) => {
16-
if (event.type === 0) {
17-
userInteraction.setVisibility(true);
18-
} else if (event.type === 1) {
19-
setCurrentSessionActive(false);
20-
}
15+
userInteraction.onSessionEvent({
16+
next: (event) => {
17+
if (event.type === 0) {
18+
userInteraction.setVisibility(true);
19+
} else if (event.type === 1) {
20+
setCurrentSessionActive(false);
21+
}
22+
},
2123
});
2224
}
2325
});

web-client/iron-svelte-client/src/lib/remote-screen/remote-screen.svelte

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@
1212
userInteractionService.subscribe((uis) => {
1313
if (uis != null) {
1414
uiService = uis;
15-
uiService.onSessionEvent((event) => {
16-
if (event.type === 0) {
17-
uiService.setVisibility(true);
18-
} else if (event.type === 1) {
19-
setCurrentSessionActive(false);
20-
showLogin.set(true);
21-
}
15+
uiService.onSessionEvent({
16+
next: (event) => {
17+
if (event.type === 0) {
18+
uiService.setVisibility(true);
19+
} else if (event.type === 1) {
20+
setCurrentSessionActive(false);
21+
showLogin.set(true);
22+
}
23+
},
2224
});
2325
}
2426
});

0 commit comments

Comments
 (0)