- parseMessage(msg: any) {
- const op = wsUserOp(msg);
- console.log(msg);
- if (msg.error) {
- toast(i18n.t(msg.error), "danger");
- return;
- } else if (msg.reconnect) {
- this.refetch();
- } else if (op == UserOperation.ListRegistrationApplications) {
- const data = wsJsonToRes<ListRegistrationApplicationsResponse>(msg);
- this.setState({
- listRegistrationApplicationsResponse: data,
- loading: false,
- });
- window.scrollTo(0, 0);
- } else if (op == UserOperation.ApproveRegistrationApplication) {
- const data = wsJsonToRes<RegistrationApplicationResponse>(msg);
- updateRegistrationApplicationRes(
- data.registration_application,
- this.state.listRegistrationApplicationsResponse
- ?.registration_applications
- );
- const uacs = UserService.Instance.unreadApplicationCountSub;
- // Minor bug, where if the application switches from deny to approve, the count will still go down
- uacs.next(uacs.getValue() - 1);
- this.setState(this.state);
- }
+ async handleApproveApplication(form: ApproveRegistrationApplication) {
+ const approveRes = await HttpService.client.approveRegistrationApplication(
+ form
+ );
+ this.setState(s => {
+ if (s.appsRes.state == "success" && approveRes.state == "success") {
+ s.appsRes.data.registration_applications = editRegistrationApplication(
+ approveRes.data.registration_application,
+ s.appsRes.data.registration_applications
+ );
+ }
+ return s;
+ });