Skip to content

Commit 1d53a67

Browse files
committed
Auto merge of #2588 - Turbo87:notifications, r=locks
Replace custom flash message implemenation with ember-cli-notifications see https://ember-cli-notifications.netlify.app/ <img width="469" alt="Bildschirmfoto 2020-06-18 um 00 13 42" src="https://user-images.githubusercontent.com/141300/84956028-a97ad980-b0f8-11ea-886d-7aa05df3939f.png"> <img width="491" alt="Bildschirmfoto 2020-06-17 um 23 55 32" src="https://user-images.githubusercontent.com/141300/84956030-aaac0680-b0f8-11ea-8131-e04ac1fb1459.png"> r? @locks
2 parents 99a0162 + ece0d96 commit 1d53a67

35 files changed

+4721
-950
lines changed

app/components/crate-toml-copy.hbs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,5 @@
55
{{on "click" this.copy}}
66
>
77
{{svg-jar "copy" alt="Copy Cargo.toml snippet to clipboard"}}
8-
{{#if this.showNotificationTask.isRunning}}
9-
<div local-class="copy-notification {{if this.showSuccess "copy-success" "copy-failure"}}">
10-
{{#if this.showSuccess}}
11-
Copied!
12-
{{else}}
13-
An error occured. Please use CTRL+C.
14-
{{/if}}
15-
</div>
16-
{{/if}}
178
</button>
189
</div>

app/components/crate-toml-copy.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
import { action } from '@ember/object';
2+
import { inject as service } from '@ember/service';
23
import Component from '@glimmer/component';
3-
import { tracked } from '@glimmer/tracking';
44

55
import copy from 'copy-text-to-clipboard';
6-
import { rawTimeout, task } from 'ember-concurrency';
76

87
export default class CrateTomlCopy extends Component {
9-
@tracked showSuccess = false;
10-
11-
@(task(function* () {
12-
yield rawTimeout(2000);
13-
}).restartable())
14-
showNotificationTask;
8+
@service notifications;
159

1610
@action
1711
copy() {
18-
this.showSuccess = copy(this.args.copyText);
19-
this.showNotificationTask.perform();
12+
let { copyText } = this.args;
13+
14+
let success = copy(copyText);
15+
if (success) {
16+
this.notifications.success('Copied to clipboard!');
17+
} else {
18+
this.notifications.error('Copy to clipboard failed!');
19+
}
2020
}
2121
}

app/components/crate-toml-copy.module.css

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,6 @@
66
position: relative;
77
}
88

9-
.copy-notification {
10-
font-size: 70%;
11-
font-weight: bold;
12-
position: absolute;
13-
14-
&.copy-success {
15-
color: var(--link-color);
16-
}
17-
18-
&.copy-failure {
19-
color: red;
20-
}
21-
}
22-
239
&.inline {
2410
display: inline-block;
2511

@@ -35,18 +21,6 @@
3521
height: 1rem;
3622
width: 1rem;
3723
}
38-
39-
.copy-notification {
40-
top: -1.25rem;
41-
left: 0;
42-
padding: 0;
43-
text-align: left;
44-
width: 4rem;
45-
46-
&.copy-failure {
47-
width: 15rem;
48-
}
49-
}
5024
}
5125
}
5226

@@ -63,19 +37,5 @@
6337
button:hover {
6438
background: #edebdd;
6539
}
66-
67-
.copy-notification {
68-
&.copy-success {
69-
width: 100%;
70-
text-align: center;
71-
}
72-
73-
&.copy-failure {
74-
bottom: -2rem;
75-
right: 0;
76-
width: 18rem;
77-
text-align: right;
78-
}
79-
}
8040
}
8141
}

app/components/email-input.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
import Component from '@ember/component';
22
import { computed } from '@ember/object';
33
import { empty } from '@ember/object/computed';
4-
import { inject as service } from '@ember/service';
54

65
import { task } from 'ember-concurrency';
76

87
import ajax from '../utils/ajax';
98

109
export default Component.extend({
1110
tagName: '',
12-
flashMessages: service(),
1311
type: '',
1412
value: '',
1513
isEditing: false,

app/components/flash-message.hbs

Lines changed: 0 additions & 3 deletions
This file was deleted.

app/components/flash-message.module.css

Lines changed: 0 additions & 15 deletions
This file was deleted.

app/controllers/application.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,5 @@ import { inject as service } from '@ember/service';
33

44
export default Controller.extend({
55
design: service(),
6-
flashMessages: service(),
76
progress: service(),
87
});

app/controllers/me/index.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import Controller from '@ember/controller';
22
import { computed } from '@ember/object';
33
import { alias, sort, filterBy, notEmpty } from '@ember/object/computed';
4-
import { inject as service } from '@ember/service';
54
import Ember from 'ember';
65

76
import ajax from '../../utils/ajax';
@@ -12,8 +11,6 @@ export default Controller.extend({
1211

1312
sortedTokens: sort('model.api_tokens', 'tokenSort'),
1413

15-
flashMessages: service(),
16-
1714
isResetting: false,
1815

1916
ownedCrates: alias('model.ownedCrates'),

app/routes/-authenticated-route.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import Route from '@ember/routing/route';
22
import { inject as service } from '@ember/service';
33

44
export default Route.extend({
5-
flashMessages: service(),
5+
notifications: service(),
66
router: service(),
77
session: service(),
88

@@ -12,7 +12,7 @@ export default Route.extend({
1212
let result = await this.session.loadUserTask.last;
1313

1414
if (!result.currentUser) {
15-
this.flashMessages.queue('Please log in to proceed');
15+
this.notifications.error('Please log in to proceed');
1616
this.session.savedTransition = transition;
1717
this.router.transitionTo('index');
1818
}

app/routes/application.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import Route from '@ember/routing/route';
22
import { inject as service } from '@ember/service';
33

44
export default Route.extend({
5-
flashMessages: service(),
65
googleCharts: service(),
76
progress: service(),
87
session: service(),
@@ -20,8 +19,5 @@ export default Route.extend({
2019
this.progress.handle(transition);
2120
return true;
2221
},
23-
didTransition() {
24-
this.flashMessages.step();
25-
},
2622
},
2723
});

app/routes/category.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ import Route from '@ember/routing/route';
33
import { inject as service } from '@ember/service';
44

55
export default Route.extend({
6-
flashMessages: service(),
6+
notifications: service(),
77

88
async model(params) {
99
try {
1010
return await this.store.find('category', params.category_id);
1111
} catch (e) {
1212
if (e instanceof NotFoundError) {
13-
this.flashMessages.queue(`Category '${params.category_id}' does not exist`);
13+
this.notifications.error(`Category '${params.category_id}' does not exist`);
1414
return this.replaceWith('index');
1515
}
1616

app/routes/confirm.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { inject as service } from '@ember/service';
44
import ajax from '../utils/ajax';
55

66
export default Route.extend({
7-
flashMessages: service(),
7+
notifications: service(),
88
session: service(),
99
store: service(),
1010

@@ -21,10 +21,10 @@ export default Route.extend({
2121
}
2222
} catch (error) {
2323
if (error.errors) {
24-
this.flashMessages.queue(`Error in email confirmation: ${error.errors[0].detail}`);
24+
this.notifications.error(`Error in email confirmation: ${error.errors[0].detail}`);
2525
return this.replaceWith('index');
2626
} else {
27-
this.flashMessages.queue(`Unknown error in email confirmation`);
27+
this.notifications.error(`Unknown error in email confirmation`);
2828
return this.replaceWith('index');
2929
}
3030
}

app/routes/crate.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@ import Route from '@ember/routing/route';
22
import { inject as service } from '@ember/service';
33

44
export default Route.extend({
5-
flashMessages: service(),
5+
notifications: service(),
66

77
async model(params) {
88
try {
99
return await this.store.find('crate', params.crate_id);
1010
} catch (e) {
1111
if (e.errors?.some(e => e.detail === 'Not Found')) {
12-
this.flashMessages.show(`Crate '${params.crate_id}' does not exist`);
12+
this.notifications.error(`Crate '${params.crate_id}' does not exist`);
13+
this.replaceWith('index');
1314
} else {
1415
throw e;
1516
}

app/routes/crate/docs.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import Route from '@ember/routing/route';
22
import { inject as service } from '@ember/service';
33

44
export default Route.extend({
5-
flashMessages: service(),
5+
notifications: service(),
66
redirector: service(),
77

88
redirect() {
@@ -15,7 +15,7 @@ export default Route.extend({
1515
// Redirect to the crate's main page and show a flash error if
1616
// no documentation is found
1717
let message = 'Crate does not supply a documentation URL';
18-
this.flashMessages.queue(message);
18+
this.notifications.error(message);
1919
this.replaceWith('crate', crate);
2020
}
2121
},

app/routes/crate/repo.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import Route from '@ember/routing/route';
22
import { inject as service } from '@ember/service';
33

44
export default Route.extend({
5-
flashMessages: service(),
5+
notifications: service(),
66
redirector: service(),
77

88
redirect() {
@@ -15,7 +15,7 @@ export default Route.extend({
1515
// Redirect to the crate's main page and show a flash error if
1616
// no repository is found
1717
let message = 'Crate does not supply a repository URL';
18-
this.flashMessages.queue(message);
18+
this.notifications.error(message);
1919
this.replaceWith('crate', crate);
2020
}
2121
},

app/routes/crate/version.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ function isUnstableVersion(version) {
88
}
99

1010
export default Route.extend({
11-
flashMessages: service(),
11+
notifications: service(),
1212

1313
async model(params) {
1414
const requestedVersion = params.version_num;
@@ -48,7 +48,7 @@ export default Route.extend({
4848

4949
const version = versions.find(version => version.num === params.version_num);
5050
if (params.version_num && !version) {
51-
this.flashMessages.queue(`Version '${params.version_num}' of crate '${crate.name}' does not exist`);
51+
this.notifications.error(`Version '${params.version_num}' of crate '${crate.name}' does not exist`);
5252
}
5353

5454
return {

app/routes/keyword.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ import Route from '@ember/routing/route';
33
import { inject as service } from '@ember/service';
44

55
export default Route.extend({
6-
flashMessages: service(),
6+
notifications: service(),
77

88
async model({ keyword_id }) {
99
try {
1010
return await this.store.find('keyword', keyword_id);
1111
} catch (e) {
1212
if (e instanceof NotFoundError) {
13-
this.flashMessages.queue(`Keyword '${keyword_id}' does not exist`);
13+
this.notifications.error(`Keyword '${keyword_id}' does not exist`);
1414
return this.replaceWith('index');
1515
}
1616

app/routes/login.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import * as localStorage from '../utils/local-storage';
1313
* @see `github-authorize` route
1414
*/
1515
export default Route.extend({
16-
flashMessages: service(),
16+
notifications: service(),
1717
session: service(),
1818

1919
beforeModel(transition) {
@@ -56,11 +56,10 @@ export default Route.extend({
5656

5757
let { data } = response;
5858
if (data && data.errors) {
59-
let error = `Failed to log in: ${data.errors[0].detail}`;
60-
this.flashMessages.show(error);
59+
this.notifications.error(`Failed to log in: ${data.errors[0].detail}`);
6160
return;
6261
} else if (!response.ok) {
63-
this.flashMessages.show('Failed to log in');
62+
this.notifications.error('Failed to log in');
6463
return;
6564
}
6665

app/routes/team.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import Route from '@ember/routing/route';
22
import { inject as service } from '@ember/service';
33

44
export default Route.extend({
5-
flashMessages: service(),
5+
notifications: service(),
66

77
queryParams: {
88
page: { refreshModel: true },
@@ -22,7 +22,7 @@ export default Route.extend({
2222
return { crates, team };
2323
} catch (e) {
2424
if (e.errors.some(e => e.detail === 'Not Found')) {
25-
this.flashMessages.queue(`Team '${params.team_id}' does not exist`);
25+
this.notifications.error(`Team '${params.team_id}' does not exist`);
2626
return this.replaceWith('index');
2727
}
2828
}

app/routes/user.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import Route from '@ember/routing/route';
22
import { inject as service } from '@ember/service';
33

44
export default Route.extend({
5-
flashMessages: service(),
5+
notifications: service(),
66

77
queryParams: {
88
page: { refreshModel: true },
@@ -21,7 +21,7 @@ export default Route.extend({
2121
return { crates, user };
2222
} catch (e) {
2323
if (e.errors.some(e => e.detail === 'Not Found')) {
24-
this.flashMessages.queue(`User '${params.user_id}' does not exist`);
24+
this.notifications.error(`User '${params.user_id}' does not exist`);
2525
return this.replaceWith('index');
2626
}
2727
}

0 commit comments

Comments
 (0)