From 3ed880b41132c5e55f6310bd0855a7b9266aec3b Mon Sep 17 00:00:00 2001
From: mrsyaban <mrsyaban99@gmail.com>
Date: Wed, 15 Nov 2023 15:01:51 +0700
Subject: [PATCH] profile done

---
 src/app/components/app/app_page.php           |  2 ++
 src/app/components/common/profile.php         |  4 +--
 .../controllers/profile/update_profile.php    | 30 ++++++++++++-------
 src/public/javascript/profile/profile.js      | 12 ++++----
 4 files changed, 31 insertions(+), 17 deletions(-)

diff --git a/src/app/components/app/app_page.php b/src/app/components/app/app_page.php
index e74a7af..62933b5 100644
--- a/src/app/components/app/app_page.php
+++ b/src/app/components/app/app_page.php
@@ -17,8 +17,10 @@
     <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/dashboard/pages/episode.css">
     <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/dashboard/components/button.css">
     <!-- JavaScript Library -->
+    <script type="module" src="<?= BASE_URL ?>/javascript/toast.mjs" defer></script>
     <script type="text/javascript" src="<?= BASE_URL ?>/javascript/player.js" defer></script>
     <script type="text/javascript" src="<?= BASE_URL ?>/javascript/util/debounce.js" defer></script>
+    <script type="text/javascript" src="<?= BASE_URL ?>/javascript/profile/profile.js" defer></script>
     <script type="module" src="<?= BASE_URL ?>/javascript/dashboard/layout.mjs" defer></script>
     <script type="module" src="<?= BASE_URL ?>/javascript/app/app.js" defer></script>
     <!-- Google Fonts -->
diff --git a/src/app/components/common/profile.php b/src/app/components/common/profile.php
index fca927a..b8d496d 100644
--- a/src/app/components/common/profile.php
+++ b/src/app/components/common/profile.php
@@ -23,12 +23,12 @@
                         <input type="text"value="<?=$this->data["username"]?>" id="username-form">
                     </div>
                 </div>
-                <button class="sh4" id="submit-profile">Submit</button>
+                <button class="sh3" id="submit-profile">Save</button>
+                <p id="save-profile-alert"></p>
             </div>
         </div>
     <?php endif; ?>
 </section>
-<script type="text/javascript" src="<?= BASE_URL ?>/javascript/profile/profile.js" defer></script>
 <script>
     const logoutBtn = document.getElementById("logout");
     logoutBtn.addEventListener("click", (e) => {
diff --git a/src/app/controllers/profile/update_profile.php b/src/app/controllers/profile/update_profile.php
index 0382256..b75829b 100644
--- a/src/app/controllers/profile/update_profile.php
+++ b/src/app/controllers/profile/update_profile.php
@@ -17,29 +17,39 @@ class UpdateProfileController
         header("Max-Age: 86400");
         header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");
         if (isset($_SERVER["QUERY_STRING"])) {
-            if (!isset($_POST['name']) || !isset($_POST['username'])) {
+            if ((!isset($_POST['name']) || !isset($_POST['username'])) && !(file_get_contents('php://input') != null)) {
                 http_response_code(403);
                 echo json_encode(["message" => "invalid username or name"]);
                 exit;
             }
-            $name = $_POST['name'];
-            $username = $_POST['username'];
+            $name = "";
+            $username = "";
+            if (isset($_POST['name']) && isset($_POST['username'])){
+                $name = $_POST['name'];
+                $username = $_POST['username'];
+            } else if ((file_get_contents('php://input') != null)){
+                $data = json_decode(file_get_contents('php://input'), true);
+                $name = $data['name'];
+                $username = $data['username'];
+            }
 
             try {
-                if (!isset($_GET["user_id"])) {
+                if (!isset($_GET["user_id"]) && !isset($_SESSION["user_id"])) {
                     http_response_code(400);
                     echo json_encode(["message" => "Invalid user id"]);
                     exit;
                 } else {
+                    $user_id = "";
+                    if (isset($_GET["user_id"])) {
+                        $user_id = $_GET["user_id"];
+                    } else {
+                        $user_id = $_SESSION["user_id"];
+                    }
                     $userModel = new UserModel();
-                    $status = $userModel->updateProfile($_GET["user_id"], $name, $username); 
+                    $status = $userModel->updateProfile($user_id, $name, $username); 
 
                     if ($status == 200) {
-                        if ($name== "woy") {
-                            http_response_code(500);
-                        } else {
-                        }
-                        http_response_code(500);
+                        http_response_code(200);
                         echo json_encode(["message" => "Profile updated successfully!", "name" => $name, "username" => $username]);
                         exit;
                     } else {
diff --git a/src/public/javascript/profile/profile.js b/src/public/javascript/profile/profile.js
index e6239b7..dede16f 100644
--- a/src/public/javascript/profile/profile.js
+++ b/src/public/javascript/profile/profile.js
@@ -1,7 +1,6 @@
-import { showErrorToast, showSuccessToast } from "../toast.mjs";
-
 const profile = document.querySelector(".profile");
 const profileMenu = document.querySelector(".profile-menu");
+const SaveProfileAlert = document.getElementById("save-profile-alert");
 console.log("masuk");
 profile &&
   profile.addEventListener("click", (e) => {
@@ -27,13 +26,14 @@ menuProfile &&
 window.addEventListener("click", function (e) {
   if (!editSection.contains(e.target) && !menuProfile.contains(e.target)) {
     editProfile.style.display = "none";
+    SaveProfileAlert.innerHTML = "";
   }
 });
 
 
 // Handle submit
 const nameForm = document.getElementById("name-form");
-const usernameForm = document.getElementById("name-form");
+const usernameForm = document.getElementById("username-form");
 const submitProfileButton = document.getElementById("submit-profile");
 
 submitProfileButton.addEventListener("click", (e) => {
@@ -53,9 +53,11 @@ submitProfileButton.addEventListener("click", (e) => {
       if (xhr.status === 200) {
         nameForm.value = JSON.parse(xhr.responseText).name;
         usernameForm.value = JSON.parse(xhr.responseText).username;
-        showSuccessToast(JSON.parse(xhr.responseText).message);      
+        SaveProfileAlert.color = "green";
+        SaveProfileAlert.innerHTML = JSON.parse(xhr.responseText).message;      
       } else {
-        showErrorToast(JSON.parse(xhr.responseText).message);
+        SaveProfileAlert.color = "red";
+        SaveProfileAlert.innerHTML = JSON.parse(xhr.responseText).message;
       }
     }
   };
-- 
GitLab