Skip to content

Commit 44776da

Browse files
committed
refactor on showBasicModal
- export it - add message - handle all the rejections - const over let
1 parent 0c22854 commit 44776da

File tree

4 files changed

+48
-38
lines changed

4 files changed

+48
-38
lines changed

lib/debugger/breakpoints.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
/** @jsx etch.dom */
33

44
import {CompositeDisposable, Emitter} from 'atom'
5-
import { showBasicModal } from '../util/basic-modal'
5+
import showBasicModal from '../util/basic-modal'
66
import {Etch} from '../util/etch'
77

88
import etch from 'etch'
@@ -253,20 +253,25 @@ export default class BreakpointManager {
253253
if (bp.file !== file || bp.line !== line) return
254254
showBasicModal([{
255255
name: 'Condition',
256-
value: bp.condition
256+
defaultText: bp.condition,
257+
message: `Enter the condition when this breakpoint applies (previous: \`${bp.condition}\`).`,
257258
}]).then(items => {
258259
const condition = items['Condition']
259260
this.addCondition(bp, condition)
260261
this.emitter.emit('update')
261262
activePane.activate() // Re-activate previously active pane
263+
}).catch((err) => {
264+
if (err) console.error(err);
265+
return
262266
})
263267
found = true
264268
})
265269

266270
if (!found) {
267271
showBasicModal([{
268272
name: 'Condition',
269-
value: '',
273+
defaultText: '',
274+
message: `Enter the condition when this breakpoint applies.`,
270275
}]).then(items => {
271276
const condition = items['Condition']
272277
this.add({
@@ -278,6 +283,8 @@ export default class BreakpointManager {
278283
})
279284
this.emitter.emit('update')
280285
activePane.activate() // Re-activate previously active pane
286+
}).catch((err) => {
287+
if (err) console.error(err);
281288
})
282289
}
283290
}

lib/debugger/debugger-pane.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import etch from 'etch'
55
import { toView, Toolbar, Tip, Button, Icon, makeicon, Etch, Raw } from '../util/etch'
6-
import { showBasicModal } from '../util/basic-modal'
6+
import showBasicModal from '../util/basic-modal'
77
import { CompositeDisposable, TextEditor } from 'atom'
88
import PaneItem from '../util/pane-item'
99
import { open } from '../util/opener'
@@ -339,12 +339,13 @@ export default class DebuggerPane extends PaneItem {
339339
addCondition (bp) {
340340
showBasicModal([{
341341
name: "Condition",
342-
value: bp.condition
342+
defaultText: bp.condition,
343+
message: `Enter the condition when this breakpoint applies (previous: \`${bp.condition}\`).`,
343344
}]).then(items => {
344345
const cond = items["Condition"]
345346
this.breakpointManager.addCondition(bp, cond)
346347
}).catch((err) => {
347-
console.error(err);
348+
if (err) console.error(err);
348349
})
349350
}
350351

lib/ink.coffee

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ exportables =
4040
Opener: once(=> require('./util/opener'))
4141
matchHighlighter: once(=> require './util/matchHighlighter')
4242
ansiToHTML: once(=> require './util/ansitohtml')
43+
showBasicModal: once(=> require './util/basic-modal')
4344

4445
module.exports = Ink =
4546
activate: ->

lib/util/basic-modal.js

Lines changed: 33 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,29 @@ import etch from 'etch'
55
import { toView, Toolbar, Button, Icon, makeicon, Etch, Raw } from './etch'
66
import { TextEditor, CompositeDisposable } from 'atom'
77

8-
export function showBasicModal(queries) {
8+
export default function showBasicModal(queries) {
99
return new Promise((resolve, reject) => {
10-
subs = new CompositeDisposable()
10+
const subs = new CompositeDisposable()
1111

12-
_resolve = (...args) => {
12+
const _resolve = (...args) => {
1313
panel.destroy()
1414
subs.dispose()
1515
resolve(...args)
1616
}
17-
_reject = (...args) => {
17+
const _reject = (...args) => {
1818
panel.destroy()
1919
subs.dispose()
2020
reject(...args)
2121
}
22-
let view = new BasicModalView(queries, _resolve, _reject)
22+
const view = new BasicModalView(queries, _resolve, _reject)
2323

2424
subs.add(atom.commands.add('.basic-modal .editor', {
2525
'basic-modal:confirm': () => view.confirm()
2626
}))
2727
subs.add(atom.commands.add('.basic-modal .editor', {
2828
'basic-modal:cancel': () => view.cancel()
2929
}))
30-
let panel = atom.workspace.addModalPanel({
30+
const panel = atom.workspace.addModalPanel({
3131
item: view,
3232
autoFocus: true
3333
})
@@ -44,24 +44,24 @@ class BasicModalView {
4444
this.reject = reject
4545
this.models = {}
4646
this.queries = queries
47-
for (let query of this.queries) {
47+
this.queries.forEach(query => {
4848
this.models[query.name] = new TextEditor({
4949
mini: true,
5050
placeholderText: query.placeholder || ''
5151
})
52-
if (query.value) {
53-
this.models[query.name].setText(query.value)
52+
if (query.defaultText) {
53+
this.models[query.name].setText(query.defaultText)
5454
}
55-
}
55+
})
5656

5757
etch.initialize(this)
5858
}
5959

6060
confirm () {
61-
let ret = {}
62-
for (let query of this.queries) {
61+
const ret = {}
62+
this.queries.forEach(query => {
6363
ret[query.name] = this.models[query.name].getText()
64-
}
64+
})
6565
this.resolve(ret)
6666
}
6767

@@ -72,34 +72,35 @@ class BasicModalView {
7272
update () {}
7373

7474
render () {
75-
let queryViews = this.queries.map(query => {
75+
const queryViews = this.queries.map(query => {
7676
return <div className="flex-table row">
7777
<div className="flex-row">
7878
{query.name || ''}
7979
</div>
8080
<div className="flex-row second">
8181
{toView(this.models[query.name].element)}
82+
{query.message || ''}
8283
</div>
8384
</div>
8485
})
8586
return <div className="basic-modal flex-table-container">
86-
{queryViews}
87-
<div className="confirm-cancel flex-table">
88-
<div className="flex-row">
89-
<Button
90-
className="btn-success"
91-
onclick={() => this.confirm()}>
92-
Confirm
93-
</Button>
94-
</div>
95-
<div className="flex-row">
96-
<Button
97-
className="btn-error"
98-
onclick={() => this.cancel()}>
99-
Cancel
100-
</Button>
101-
</div>
102-
</div>
103-
</div>
87+
{queryViews}
88+
<div className="confirm-cancel flex-table">
89+
<div className="flex-row">
90+
<Button
91+
className="btn-success"
92+
onclick={() => this.confirm()}>
93+
Confirm
94+
</Button>
95+
</div>
96+
<div className="flex-row">
97+
<Button
98+
className="btn-error"
99+
onclick={() => this.cancel()}>
100+
Cancel
101+
</Button>
102+
</div>
103+
</div>
104+
</div>
104105
}
105106
}

0 commit comments

Comments
 (0)