Skip to content

Commit 48ae563

Browse files
committed
Put "(Unsaved)" in front of title if not saved
1 parent 6e810e6 commit 48ae563

File tree

2 files changed

+14
-12
lines changed

2 files changed

+14
-12
lines changed

src/frontend/components/App/index.jsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,10 +210,20 @@ class App extends React.Component {
210210
this.setState({ navigatorOpened });
211211
}
212212

213+
isGistSaved() {
214+
const { titles, files, lastTitles, lastFiles } = this.props.current;
215+
const serializeTitles = titles => JSON.stringify(titles);
216+
const serializeFiles = files => JSON.stringify(files.map(({ name, content }) => ({ name, content })));
217+
return serializeTitles(titles) === serializeTitles(lastTitles) &&
218+
serializeFiles(files) === serializeFiles(lastFiles);
219+
}
220+
213221
render() {
214222
const { navigatorOpened, workspaceWeights, viewerTabIndex, editorTabIndex } = this.state;
215223
const { titles, files } = this.props.current;
216224

225+
const gistSaved = this.isGistSaved();
226+
217227
const readmeFile = files.find(file => file.name === 'README.md') || {
218228
name: 'README.md',
219229
content: `# ${titles[1]}\nREADME.md not found`,
@@ -236,13 +246,13 @@ class App extends React.Component {
236246
return (
237247
<div className={styles.app}>
238248
<Helmet>
239-
<title>{titles.join(' - ')}</title>
249+
<title>{gistSaved ? '' : '(Unsaved) '}{titles.join(' - ')}</title>
240250
<meta name="description" content={description} />
241251
</Helmet>
242252
<Header className={styles.header} onClickTitleBar={() => this.toggleNavigatorOpened()}
243253
navigatorOpened={navigatorOpened} loadScratchPapers={() => this.loadScratchPapers()}
244254
loadAlgorithm={params => this.loadAlgorithm(params)}
245-
onAction={() => this.handleChangeViewerTabIndex(1)} />
255+
onAction={() => this.handleChangeViewerTabIndex(1)} gistSaved={gistSaved} />
246256
<ResizableContainer className={styles.workspace} horizontal weights={workspaceWeights}
247257
visibles={[navigatorOpened, true, true]}
248258
onChangeWeights={weights => this.handleChangeWorkspaceWeights(weights)}>

src/frontend/components/Header/index.jsx

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -97,17 +97,9 @@ class Header extends React.Component {
9797
.catch(this.props.showErrorToast);
9898
}
9999

100-
isGistSaved() {
101-
const { titles, files, lastTitles, lastFiles } = this.props.current;
102-
const serializeTitles = titles => JSON.stringify(titles);
103-
const serializeFiles = files => JSON.stringify(files.map(({ name, content }) => ({ name, content })));
104-
return serializeTitles(titles) === serializeTitles(lastTitles) &&
105-
serializeFiles(files) === serializeFiles(lastFiles);
106-
}
107-
108100
render() {
109101
const { interval, paused, started } = this.state;
110-
const { className, onClickTitleBar, navigatorOpened, onAction } = this.props;
102+
const { className, onClickTitleBar, navigatorOpened, onAction, gistSaved } = this.props;
111103
const { gistId, titles } = this.props.current;
112104
const { ext, user } = this.props.env;
113105

@@ -131,7 +123,7 @@ class Header extends React.Component {
131123
</Button>
132124
</div>
133125
<div className={styles.section}>
134-
<Button icon={faSave} primary disabled={!gistId || this.isGistSaved()}
126+
<Button icon={faSave} primary disabled={!gistId || gistSaved}
135127
onClick={() => this.saveGist()}>Save</Button>
136128
<Button icon={faTrashAlt} primary disabled={!gistId} onClick={() => this.deleteGist()}
137129
confirmNeeded>Delete</Button>

0 commit comments

Comments
 (0)