From 941ba76ac86df0adf00f4295e1da23b570b13934 Mon Sep 17 00:00:00 2001 From: Robbie Antenesse Date: Thu, 23 May 2019 18:09:01 -0600 Subject: [PATCH] Allow updating account info --- src/js/account/index.js | 6 +++++- src/js/account/login.js | 13 ++++++++++++- src/js/settings.js | 21 +++++++++++++++++++-- src/php/api/User.php | 8 ++++---- src/php/api/index.php | 8 +++++++- 5 files changed, 47 insertions(+), 9 deletions(-) diff --git a/src/js/account/index.js b/src/js/account/index.js index db320ca..d1a6fe7 100644 --- a/src/js/account/index.js +++ b/src/js/account/index.js @@ -1,7 +1,7 @@ import '../../scss/Account/main.scss'; import { renderLoginForm } from "./render"; -import { validateToken } from './login'; +import { validateToken, updateAccountData } from './login'; import { uploadWords, uploadDetails, @@ -20,6 +20,10 @@ export function loginWithToken() { validateToken(); } +export function editAccount(accountData) { + updateAccountData(accountData); +} + export function syncImportedDictionary() { uploadWholeDictionary(true); } diff --git a/src/js/account/login.js b/src/js/account/login.js index a865a10..9b5f00a 100644 --- a/src/js/account/login.js +++ b/src/js/account/login.js @@ -139,4 +139,15 @@ export function triggerLoginChanges() { renderAccountSettings(); renderAccountActions(); -} \ No newline at end of file +} + +export function updateAccountData(userData) { + request({ + action: 'set-user-data', + userData, + }, successData => { + addMessage('Successfully Updated Account Data'); + }, error => { + addMessage(error, undefined, 'error'); + }); +} diff --git a/src/js/settings.js b/src/js/settings.js index 0979120..f7f7f2c 100644 --- a/src/js/settings.js +++ b/src/js/settings.js @@ -1,8 +1,8 @@ import { SETTINGS_KEY, DEFAULT_SETTINGS } from "../constants"; -import { cloneObject } from "../helpers"; +import { cloneObject, removeTags } from "../helpers"; import { usePhondueDigraphs } from "./KeyboardFire/phondue/ipaField"; import { renderWords } from "./render"; -import { addMessage } from "./utilities"; +import { addMessage, hasToken } from "./utilities"; import { enableHotKeys, disableHotKeys } from "./hotkeys"; export function loadSettings() { @@ -29,6 +29,23 @@ export function saveSettingsModal() { window.settings.useIPAPronunciationField = document.getElementById('settingsUseIPA').checked; window.settings.useHotkeys = document.getElementById('settingsUseHotkeys').checked; + if (hasToken()) { + import('./account/index.js').then(account => { + const emailField = document.getElementById('accountSettingsEmail'); + let email = removeTags(emailField.value).trim(); + const publicName = document.getElementById('accountSettingsPublicName'); + if (!/.+@.+\..+/.test(email)) { + email = window.account.email; + emailField.value = email; + } + window.account.email = email; + window.account.publicName = removeTags(publicName.value).trim(); + window.account.allowEmails = document.getElementById('accountSettingsAllowEmails').checked; + + account.editAccount(window.account); + }); + } + saveSettings(); toggleHotkeysEnabled(); toggleIPAPronunciationFields(); diff --git a/src/php/api/User.php b/src/php/api/User.php index 9874acb..2cf569f 100644 --- a/src/php/api/User.php +++ b/src/php/api/User.php @@ -96,11 +96,11 @@ VALUES (?, ?, ?, ?, ?)'; ); $update_success = $this->db->execute($query, $properties); if ($update_success) { - return array( - 'token' => $token, - 'userData' => $user_data, - ); + return true; } + return array( + 'error' => $this->db->last_error_info, + ); } return false; diff --git a/src/php/api/index.php b/src/php/api/index.php index 13f940b..3212c6d 100644 --- a/src/php/api/index.php +++ b/src/php/api/index.php @@ -136,12 +136,18 @@ switch ($action) { if ($token !== false && isset($request['userData'])) { $user = new User(); $updated_user = $user->setUserData($token, $request['userData']); - if ($updated_user !== false) { + if ($updated_user === true) { return Response::json(array( 'data' => $updated_user, 'error' => false, ), 200); } + if (isset($updated_user['error'])) { + return Response::json(array( + 'data' => $updated_user['error'], + 'error' => false, + ), 500); + } return Response::json(array( 'data' => 'Could not set user data: missing data', 'error' => true,