Skip to content

Commit 40c82bb

Browse files
authored
Merge pull request #174 from netlify/dev-mode-tweaks
chore: Add feature to switch out identity url
2 parents b48c821 + afd4633 commit 40c82bb

File tree

5 files changed

+91
-45
lines changed

5 files changed

+91
-45
lines changed

src/components/app.js

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class App extends Component {
6262
handlePage = page => this.props.store.openModal(page);
6363
handleLogout = () => this.props.store.logout();
6464
handleSiteURL = url => this.props.store.setSiteURL(url);
65+
clearSiteURL = url => this.props.store.clearSiteURL();
6566
handleExternalLogin = provider => this.props.store.externalLogin(provider);
6667
handleUser = ({ name, email, password }) => {
6768
const { store } = this.props;
@@ -87,6 +88,8 @@ class App extends Component {
8788

8889
renderBody() {
8990
const { store } = this.props;
91+
const page = pages[store.modal.page] || {};
92+
const pageLinkHandler = () => this.handlePage(page.link);
9093

9194
if (!store.gotrue) {
9295
return <SiteURLForm onSiteURL={this.handleSiteURL} />;
@@ -108,12 +111,23 @@ class App extends Component {
108111
}
109112

110113
return (
111-
<UserForm
112-
page={pages[store.modal.page] || {}}
113-
message={store.message}
114-
saving={store.saving}
115-
onSubmit={this.handleUser}
116-
/>
114+
<div>
115+
<UserForm
116+
page={pages[store.modal.page] || {}}
117+
message={store.message}
118+
saving={store.saving}
119+
onSubmit={this.handleUser}
120+
/>
121+
{!store.user && page.link && store.gotrue && (
122+
<button
123+
onclick={pageLinkHandler}
124+
className="btnLink forgotPasswordLink"
125+
>
126+
{page.link_text}
127+
</button>
128+
)}
129+
<SiteURLForm devMode="true" onSiteURL={this.clearSiteURL} />
130+
</div>
117131
);
118132
}
119133

@@ -154,7 +168,6 @@ class App extends Component {
154168
const showHeader = pagesWithHeader[store.modal.page];
155169
const showSignup = store.settings && !store.settings.disable_signup;
156170
const page = pages[store.modal.page] || {};
157-
const pageLinkHandler = () => this.handlePage(page.link);
158171

159172
return (
160173
<div>
@@ -172,14 +185,6 @@ class App extends Component {
172185
>
173186
{this.renderBody()}
174187
{this.renderProviders()}
175-
{!store.user && page.link && store.gotrue && (
176-
<button
177-
onclick={pageLinkHandler}
178-
className="btnLink forgotPasswordLink"
179-
>
180-
{page.link_text}
181-
</button>
182-
)}
183188
</Modal>
184189
</div>
185190
);

src/components/forms/siteurl.js

Lines changed: 50 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,48 +3,69 @@ import { h, Component } from "preact";
33
export default class SiteURLForm extends Component {
44
constructor(props) {
55
super(props);
6-
this.state = { url: "" };
6+
this.state = { url: "", development: props.devMode || false };
77
}
88

99
handleInput = e => {
1010
this.setState({ [e.target.name]: e.target.value });
1111
};
1212

13-
handleSiteURL = e => {
13+
addSiteURL = e => {
1414
e.preventDefault();
1515
this.props.onSiteURL(this.state.url);
1616
};
1717

18+
clearSiteURL = e => {
19+
e.preventDefault;
20+
this.props.onSiteURL();
21+
};
22+
1823
render() {
19-
const { url } = this.state;
24+
const { url, development } = this.state;
2025

2126
return (
22-
<form onsubmit={this.handleSiteURL} className="form">
23-
<div className="flashMessage">
24-
{
25-
"Looks like you're running a local server. Please let us know the URL of your Netlify site."
26-
}
27-
</div>
28-
<div className="formGroup">
29-
<label>
30-
<span className="visuallyHidden">Enter your Netlify Site URL</span>
31-
<input
32-
className="formControl"
33-
type="url"
34-
name="url"
35-
value={url}
36-
placeholder="URL of your Netlify site"
37-
autocapitalize="off"
38-
required
39-
oninput={this.handleInput}
40-
/>
41-
<div className="inputFieldIcon inputFieldUrl" />
42-
</label>
43-
</div>
44-
<button type="submit" className="btn">
45-
Set site's URL
46-
</button>
47-
</form>
27+
<div>
28+
{development ? (
29+
<div class="subheader">
30+
<h3>Development Settings</h3>
31+
<button
32+
onclick={e => this.clearSiteURL(e)}
33+
className="btnLink forgotPasswordLink"
34+
>
35+
Clear localhost URL
36+
</button>
37+
</div>
38+
) : (
39+
<form onsubmit={this.addSiteURL} className="form">
40+
<div className="flashMessage">
41+
{
42+
"Looks like you're running a local server. Please let us know the URL of your Netlify site."
43+
}
44+
</div>
45+
<div className="formGroup">
46+
<label>
47+
<span className="visuallyHidden">
48+
Enter your Netlify Site URL
49+
</span>
50+
<input
51+
className="formControl"
52+
type="url"
53+
name="url"
54+
value={url}
55+
placeholder="URL of your Netlify site"
56+
autocapitalize="off"
57+
required
58+
oninput={this.handleInput}
59+
/>
60+
<div className="inputFieldIcon inputFieldUrl" />
61+
</label>
62+
</div>
63+
<button type="submit" className="btn">
64+
Set site's URL
65+
</button>
66+
</form>
67+
)}
68+
</div>
4869
);
4970
}
5071
}

src/components/modal.css

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,3 +520,13 @@
520520
width: 1px;
521521
#fff-space: nowrap;
522522
}
523+
524+
.subheader {
525+
margin-top: 2em;
526+
border-top: 1px solid rgb(14, 30, 37);
527+
528+
h3 {
529+
padding-top: 1em;
530+
text-align: center;
531+
}
532+
}

src/netlify-identity.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,11 @@ observe(store.modal, "isOpen", () => {
124124
});
125125

126126
observe(store, "siteURL", () => {
127-
localStorage.setItem("netlifySiteURL", store.siteURL);
127+
if (store.siteURL === null || store.siteURL === undefined) {
128+
localStorage.removeItem("netlifySiteURL");
129+
} else {
130+
localStorage.setItem("netlifySiteURL", store.siteURL);
131+
}
128132
store.init(instantiateGotrue(), true);
129133
});
130134

src/state/store.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@ store.setSiteURL = action(function setSiteURL(url) {
6767
store.siteURL = url;
6868
});
6969

70+
store.clearSiteURL = action(function clearSiteURL() {
71+
store.gotrue = null;
72+
store.siteURL = null;
73+
store.settings = null;
74+
});
75+
7076
store.login = action(function login(email, password) {
7177
store.startAction();
7278
return store.gotrue

0 commit comments

Comments
 (0)