Skip to content

Commit e21cc0a

Browse files
author
Jovert Lota Palonpon
committed
[UsersList] wip
1 parent fc08b0e commit e21cc0a

14 files changed

+261
-75158
lines changed

public/assets.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
2-
"js/backoffice.js": "js/backoffice.bundle.641bb19e1c6de2294267.js",
3-
"js/vendor.js": "js/vendor.bundle.60bab7ed0c4b898e6cd4.js"
2+
"js/backoffice.js": "js/backoffice.bundle.4f26014a924451720488.js",
3+
"js/vendor.js": "js/vendor.bundle.fe9518cbecd64dd5305d.js"
44
}

public/js/backoffice.bundle.4f26014a924451720488.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/js/backoffice.bundle.641bb19e1c6de2294267.js

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

public/js/vendor.bundle.60bab7ed0c4b898e6cd4.js

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

public/js/vendor.bundle.fe9518cbecd64dd5305d.js

Lines changed: 134 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/service-worker.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

resources/js/config/locale.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
export default {
22
// English
3+
'en.actions': require('../../lang/en/actions.php'),
34
'en.navigation': require('../../lang/en/navigation.php'),
45
'en.resources': require('../../lang/en/resources.php'),
56
'en.table': require('../../lang/en/table.php'),
67

78
// Filipino
9+
'fil.actions': require('../../lang/fil/actions.php'),
810
'fil.navigation': require('../../lang/fil/navigation.php'),
911
'fil.resources': require('../../lang/fil/resources.php'),
1012
'fil.table': require('../../lang/fil/table.php'),

resources/js/models/User.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,21 @@ export default class User {
1919

2020
return response.data;
2121
}
22+
23+
/**
24+
* Delete a user
25+
*
26+
* @param {number}
27+
*
28+
* @return {object}
29+
*/
30+
static async delete(id) {
31+
const response = await axios.delete(`/api/users/${id}`);
32+
33+
if (response.status !== 200) {
34+
return;
35+
}
36+
37+
return response.data;
38+
}
2239
}

resources/js/ui/Modals/Confirmation.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@ const Confirmation = props => {
3737

3838
<DialogActions>
3939
<Button onClick={cancelled} color="primary">
40-
{cancelText ? cancelText : Lang.get('resources.cancel')}
40+
{cancelText ? cancelText : Lang.get('actions.cancel')}
4141
</Button>
4242

4343
<Button onClick={confirmed} color="secondary" autoFocus>
44-
{confirmText ? confirmText : Lang.get('resources.confirm')}
44+
{confirmText ? confirmText : Lang.get('actions.confirm')}
4545
</Button>
4646
</DialogActions>
4747
</Dialog>

resources/js/views/__backoffice/users/List.js

Lines changed: 65 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class List extends Component {
1919
},
2020
filters: {},
2121
selectedResources: [],
22-
activeResource: 0,
22+
activeResourceId: 0,
2323
message: {},
2424
alert: {},
2525
};
@@ -28,12 +28,13 @@ class List extends Component {
2828
* Event listener that is triggered when a resource delete button is clicked.
2929
* This should prompt for confirmation.
3030
*
31-
* @param {string} resource
31+
* @param {string} resourceId
3232
*
3333
* @return {undefined}
3434
*/
35-
handleDeleteClick = resource => {
35+
handleDeleteClick = resourceId => {
3636
this.setState({
37+
activeResourceId: resourceId,
3738
alert: {
3839
type: 'confirmation',
3940
title: Lang.get('resources.delete_confirmation_title', {
@@ -42,8 +43,8 @@ class List extends Component {
4243
body: Lang.get('resources.delete_confirmation_body', {
4344
name: 'User',
4445
}),
45-
confirmText: Lang.get('resources.continue'),
46-
confirmed: () => alert('Deleting User:' + resource),
46+
confirmText: Lang.get('actions.continue'),
47+
confirmed: async () => await this.deleteUser(resourceId),
4748
cancelled: () => this.setState({ alert: {} }),
4849
},
4950
});
@@ -193,6 +194,47 @@ class List extends Component {
193194
history.push(`${location.pathname}${queryString}`);
194195
}
195196

197+
/**
198+
* This should send an API request to delete a resource.
199+
*
200+
* @param {string} resourceId
201+
*
202+
* @return {undefined}
203+
*/
204+
deleteUser = async resourceId => {
205+
this.setState({ loading: true });
206+
207+
try {
208+
const pagination = await User.delete(resourceId);
209+
210+
this.setState({
211+
loading: false,
212+
pagination,
213+
alert: {},
214+
message: {
215+
type: 'success',
216+
body: 'User successfully deleted!',
217+
closed: () => this.setState({ message: {} }),
218+
actionText: Lang.get('actions.undo'),
219+
action: () => alert('Recovering...'),
220+
},
221+
});
222+
} catch (error) {
223+
const { activeResourceId } = this.state;
224+
225+
this.setState({
226+
loading: false,
227+
message: {
228+
type: 'error',
229+
body: 'Error deleting user!',
230+
closed: () => this.setState({ message: {} }),
231+
actionText: Lang.get('actions.retry'),
232+
action: async () => await this.deleteUser(activeResourceId),
233+
},
234+
});
235+
}
236+
};
237+
196238
/**
197239
* This should send an API request to fetch all resource.
198240
*
@@ -278,6 +320,9 @@ class List extends Component {
278320
current_page: page,
279321
} = pagination;
280322

323+
const { pageProps } = this.props;
324+
const { user: authUser } = pageProps;
325+
281326
const primaryAction = {
282327
text: Lang.get('resources.create', {
283328
name: 'User',
@@ -323,20 +368,22 @@ class List extends Component {
323368
</IconButton>
324369
</Tooltip>
325370

326-
<Tooltip
327-
title={Lang.get('resources.delete', {
328-
name: 'User',
329-
})}
330-
>
331-
<IconButton
332-
color="secondary"
333-
onClick={() =>
334-
this.handleDeleteClick(user.id)
335-
}
371+
{authUser.id !== user.id && (
372+
<Tooltip
373+
title={Lang.get('resources.delete', {
374+
name: 'User',
375+
})}
336376
>
337-
<DeleteIcon />
338-
</IconButton>
339-
</Tooltip>
377+
<IconButton
378+
color="secondary"
379+
onClick={() =>
380+
this.handleDeleteClick(user.id)
381+
}
382+
>
383+
<DeleteIcon />
384+
</IconButton>
385+
</Tooltip>
386+
)}
340387
</div>
341388
),
342389
};

0 commit comments

Comments
 (0)