Skip to content

Commit 910852a

Browse files
committed
[ new ] Event for when the connection status in panel is clicked
1 parent 9edad1e commit 910852a

File tree

8 files changed

+115
-71
lines changed

8 files changed

+115
-71
lines changed

lib/js/src/State/State__Command.bs.js

Lines changed: 19 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/js/src/View/Panel/Header.bs.js

Lines changed: 11 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/js/src/View/Panel/Panel.bs.js

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/js/src/View/View.bs.js

Lines changed: 62 additions & 44 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/State/State__Command.res

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,7 @@ let rec dispatchCommand = async (state: State.t, command): unit => {
386386
} else {
387387
await State__View.Panel.interruptPrompt(state)
388388
}
389+
| ConnectionStatusClicked => Js.log("Connection status clicked")
389390
| JumpToTarget(link) =>
390391
Editor.focus(state.document)
391392
let path = state.document->VSCode.TextDocument.fileName->Parser.filepath

src/View/Panel/Header.res

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
open React
22

33
@react.component
4-
let make = (~header: View.Header.t, ~connectionStatus: string) => {
5-
let connectionStatus = <div className="agda-mode-header-connection-status"> {string(connectionStatus)} </div>
4+
let make = (~header: View.Header.t, ~connectionStatus: string, ~onConnectionStatusClick: unit => unit) => {
5+
let connectionStatusElement =
6+
<div
7+
className="agda-mode-header-connection-status clickable"
8+
onClick={_ => onConnectionStatusClick()}
9+
title="Click to switch Agda version"
10+
>
11+
{string(connectionStatus)}
12+
</div>
613
switch header {
7-
| Plain(text) => <div className="agda-mode-header"> {string(text)} {connectionStatus} </div>
8-
| Success(text) => <div className="agda-mode-header success"> {string(text)} {connectionStatus} </div>
9-
| Warning(text) => <div className="agda-mode-header warning"> {string(text)} {connectionStatus} </div>
10-
| Error(text) => <div className="agda-mode-header error"> {string(text)} {connectionStatus} </div>
14+
| Plain(text) => <div className="agda-mode-header"> {string(text)} {connectionStatusElement} </div>
15+
| Success(text) => <div className="agda-mode-header success"> {string(text)} {connectionStatusElement} </div>
16+
| Warning(text) => <div className="agda-mode-header warning"> {string(text)} {connectionStatusElement} </div>
17+
| Error(text) => <div className="agda-mode-header error"> {string(text)} {connectionStatusElement} </div>
1118
}
1219
}

src/View/Panel/Panel.res

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ let make = (
117117
<View.EventFromView.Provider value=onEventFromView>
118118
<section className="agda-mode native-key-bindings" tabIndex={-1}>
119119
<div className="agda-mode-header-container">
120-
<Header header connectionStatus />
120+
<Header header connectionStatus onConnectionStatusClick={() => onEventFromView->Chan.emit(ConnectionStatusClicked)} />
121121
<Prompt
122122
inputMethodActivated={Option.isSome(inputMethodState)} prompt onUpdatePromptIM onSubmit
123123
/>

src/View/View.res

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ module EventFromView = {
341341
| InputMethod(InputMethod.t)
342342
| PromptIMUpdate(PromptIMUpdate.t)
343343
| JumpToTarget(Link.t)
344+
| ConnectionStatusClicked
344345

345346
let toString = x =>
346347
switch x {
@@ -349,6 +350,7 @@ module EventFromView = {
349350
| InputMethod(_) => "InputMethod"
350351
| PromptIMUpdate(_) => "PromptIMUpdate"
351352
| JumpToTarget(_) => "JumpToTarget"
353+
| ConnectionStatusClicked => "ConnectionStatusClicked"
352354
}
353355

354356
let chan: Chan.t<t> = Chan.make()
@@ -373,6 +375,7 @@ module EventFromView = {
373375
| "InputMethod" => Payload(InputMethod.decode->map(payload => InputMethod(payload)))
374376
| "PromptIMUpdate" => Payload(PromptIMUpdate.decode->map(payload => PromptIMUpdate(payload)))
375377
| "JumpToTarget" => Payload(Link.decode->map(link => JumpToTarget(link)))
378+
| "ConnectionStatusClicked" => TagOnly(ConnectionStatusClicked)
376379
| tag => raise(DecodeError("[EventFromView] Unknown constructor: " ++ tag))
377380
}
378381
})
@@ -386,6 +389,7 @@ module EventFromView = {
386389
| InputMethod(action) => Payload("InputMethod", InputMethod.encode(action))
387390
| PromptIMUpdate(action) => Payload("PromptIMUpdate", PromptIMUpdate.encode(action))
388391
| JumpToTarget(link) => Payload("JumpToTarget", Link.encode(link))
392+
| ConnectionStatusClicked => TagOnly("ConnectionStatusClicked")
389393
}
390394
, ...)
391395
}

0 commit comments

Comments
 (0)