Skip to content

Commit e1b1a84

Browse files
authored
Merge pull request #111 from Naturalclar/feat/allowEnteringAppName
Feature: replace RnDiffApp with entered AppName
2 parents e46b7e7 + 91a9206 commit e1b1a84

File tree

3 files changed

+51
-14
lines changed

3 files changed

+51
-14
lines changed

src/components/common/DiffViewer.js

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState, useEffect } from 'react'
1+
import React, { useState, useEffect, useCallback } from 'react'
22
import styled from 'styled-components'
33
import { Alert } from 'antd'
44
import { parseDiff, withChangeSelect } from 'react-diff-view'
@@ -8,7 +8,6 @@ import DiffSection from './Diff/DiffSection'
88
import DiffLoading from './Diff/DiffLoading'
99
import UsefulContentSection from './UsefulContentSection'
1010
import ViewStyleOptions from './Diff/DiffViewStyleOptions'
11-
1211
import CompletedFilesCounter from './CompletedFilesCounter'
1312
import { AppNameWarning } from './AppNameWarning'
1413

@@ -24,7 +23,8 @@ const DiffViewer = ({
2423
fromVersion,
2524
toVersion,
2625
selectedChanges,
27-
onToggleChangeSelection
26+
onToggleChangeSelection,
27+
appName
2828
}) => {
2929
const [isLoading, setLoading] = useState(true)
3030
const [diff, setDiff] = useState(null)
@@ -62,6 +62,16 @@ const DiffViewer = ({
6262
localStorage.setItem('viewStyle', newViewStyle)
6363
}
6464

65+
const replaceAppName = useCallback(
66+
text => {
67+
if (!appName) return text
68+
return text
69+
.replace(/RnDiffApp/g, appName)
70+
.replace(/rndiffapp/g, appName.toLowerCase())
71+
},
72+
[appName]
73+
)
74+
6575
useEffect(() => {
6676
if (!showDiff) {
6777
return
@@ -75,7 +85,7 @@ const DiffViewer = ({
7585
).text()
7686

7787
setDiff(
78-
parseDiff(response).sort(({ newPath }) =>
88+
parseDiff(replaceAppName(response)).sort(({ newPath }) =>
7989
newPath.includes('package.json') ? -1 : 1
8090
)
8191
)
@@ -85,8 +95,13 @@ const DiffViewer = ({
8595
setLoading(false)
8696
}
8797

88-
fetchDiff()
89-
}, [fromVersion, showDiff, toVersion])
98+
const debounce = setTimeout(() => {
99+
fetchDiff()
100+
}, 750)
101+
return () => {
102+
clearTimeout(debounce)
103+
}
104+
}, [appName, fromVersion, replaceAppName, showDiff, toVersion])
90105

91106
if (!showDiff) {
92107
return null

src/components/common/Settings.js

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import React, { useState } from 'react'
2-
import { Popover, Button, Checkbox } from 'antd'
2+
import { Popover, Button, Checkbox, Input } from 'antd'
33
import { SHOW_LATEST_RCS } from '../../utils'
4+
import styled from 'styled-components'
45

5-
const Settings = ({ handleSettingsChange }) => {
6+
const InputContainer = styled.div({
7+
marginTop: '16px'
8+
})
9+
const Settings = ({ handleSettingsChange, appName, setAppName }) => {
610
const [popoverVisibility, setVisibility] = useState(false)
711

812
const handleClickChange = visibility => setVisibility(visibility)
@@ -14,11 +18,23 @@ const Settings = ({ handleSettingsChange }) => {
1418
<Popover
1519
placement="bottomRight"
1620
content={
17-
<Checkbox.Group onChange={updateCheckboxValues}>
18-
<div>
19-
<Checkbox value={SHOW_LATEST_RCS}>{SHOW_LATEST_RCS}</Checkbox>
20-
</div>
21-
</Checkbox.Group>
21+
<>
22+
<Checkbox.Group onChange={updateCheckboxValues}>
23+
<div>
24+
<Checkbox value={SHOW_LATEST_RCS}>{SHOW_LATEST_RCS}</Checkbox>
25+
</div>
26+
</Checkbox.Group>
27+
<InputContainer>
28+
<h4>What's your app name?</h4>
29+
<Input
30+
value={appName}
31+
onChange={e => {
32+
setAppName(e.target.value)
33+
}}
34+
placeholder="MyAwesomeApp"
35+
/>
36+
</InputContainer>
37+
</>
2238
}
2339
trigger="click"
2440
visible={popoverVisibility}

src/components/pages/Home.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ const Home = () => {
5555
const [settings, setSettings] = useState({
5656
[`${SHOW_LATEST_RCS}`]: false
5757
})
58+
const [appName, setAppName] = useState('')
5859

5960
useEffect(() => {
6061
if (process.env.NODE_ENV === 'production') {
@@ -105,7 +106,11 @@ const Home = () => {
105106
Star
106107
</StarButton>
107108

108-
<Settings handleSettingsChange={handleSettingsChange} />
109+
<Settings
110+
handleSettingsChange={handleSettingsChange}
111+
appName={appName}
112+
setAppName={setAppName}
113+
/>
109114
</TitleContainer>
110115

111116
<VersionSelector
@@ -118,6 +123,7 @@ const Home = () => {
118123
showDiff={showDiff}
119124
fromVersion={fromVersion}
120125
toVersion={toVersion}
126+
appName={appName}
121127
/>
122128
</Page>
123129
)

0 commit comments

Comments
 (0)