From 41c30aff7b2b58995b1e48058a2ad82202592382 Mon Sep 17 00:00:00 2001 From: Partow Roshani Date: Mon, 8 Sep 2025 11:09:22 +0330 Subject: [PATCH] fix bugs --- src/main/java/module-info.java | 25 ++++++++++-------- .../UI/AddMembersController.java | 6 +---- .../UI/ManageGroupController.java | 18 ++++++++++++- .../a01fa00f-00cc-4222-9e75-4f44fe0d6d26.jpg | Bin 0 -> 39335 bytes 4 files changed, 32 insertions(+), 17 deletions(-) create mode 100644 uploads/avatars/2025-09-08/a01fa00f-00cc-4222-9e75-4f44fe0d6d26.jpg diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index c525a65..eedc2c7 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -1,29 +1,32 @@ module org.to.telegramfinalproject { requires javafx.controls; requires javafx.fxml; + requires javafx.graphics; // بهتره اضافه باشه + requires javafx.media; requires javafx.web; + requires org.json; + requires java.sql; + requires java.desktop; + + // لایبرری‌های جانبی — اگر واقعاً در مسیر ماژول هستند requires org.controlsfx.controls; requires com.dlsc.formsfx; requires net.synedra.validatorfx; requires org.kordamp.ikonli.javafx; requires org.kordamp.bootstrapfx.core; requires eu.hansolo.tilesfx; - requires org.json; - requires java.sql; - requires java.desktop; - requires spark.core; - requires javax.servlet.api; requires mp3agic; - requires jdk.internal.le; - requires javafx.media; + requires spark.core; // فقط اگر واقعاً استفاده می‌کنی + requires javax.servlet.api; // فقط اگر واقعاً استفاده می‌کنی - // FXML کنترلرها در این پکیج‌اند: + // کنترلرها/کلاس‌هایی که FXML به آن‌ها دسترسی بازتابی دارد opens org.to.telegramfinalproject.UI to javafx.fxml; - // اگر FXML از کلاس‌های Client هم استفاده می‌کند: opens org.to.telegramfinalproject.Client to javafx.fxml; + opens org.to.telegramfinalproject.Models to javafx.fxml; // اگر مدل‌ها داخل FXML مصرف می‌شوند - // فقط اگر لازم است از بیرون به این API‌ها کامپایل شود: + // اگر پکیج‌هایی را می‌خواهی خارج از ماژول در دسترس قرار دهی + exports org.to.telegramfinalproject.UI; exports org.to.telegramfinalproject.Client; - // ⚠️ عمداً NOT exporting/opens ریشه‌ی پکیج، چون کلاس ندارد. + exports org.to.telegramfinalproject.Models; } diff --git a/src/main/java/org/to/telegramfinalproject/UI/AddMembersController.java b/src/main/java/org/to/telegramfinalproject/UI/AddMembersController.java index 4e62c3a..9d8d61a 100644 --- a/src/main/java/org/to/telegramfinalproject/UI/AddMembersController.java +++ b/src/main/java/org/to/telegramfinalproject/UI/AddMembersController.java @@ -206,11 +206,9 @@ public class AddMembersController { private Image loadAvatar(String path) { try { - // 1) اگر ریسورس داخلی باشد var in = getClass().getResourceAsStream(path); if (in != null) return new Image(in); - // 2) اگر URL کامل یا file URI return new Image(path, true); } catch (Exception e) { return new Image( @@ -233,7 +231,6 @@ public class AddMembersController { List ids = selectedContacts.stream().map(Contact::getId).toList(); - // تلاش برای batch JSONObject batchReq = new JSONObject() .put("action", "add_members_to_group") .put("group_id", groupInternalId.toString()) @@ -248,11 +245,10 @@ public class AddMembersController { return; } - // fallback: تک‌به‌تک boolean allOk = true; for (String uid : ids) { JSONObject single = new JSONObject() - .put("action", "add_member_to_group") + .put("action", "add_members_to_group") .put("group_id", groupInternalId.toString()) .put("user_id", uid); JSONObject r = ActionHandler.sendWithResponse(single); diff --git a/src/main/java/org/to/telegramfinalproject/UI/ManageGroupController.java b/src/main/java/org/to/telegramfinalproject/UI/ManageGroupController.java index 78490c4..82195b0 100644 --- a/src/main/java/org/to/telegramfinalproject/UI/ManageGroupController.java +++ b/src/main/java/org/to/telegramfinalproject/UI/ManageGroupController.java @@ -14,6 +14,8 @@ import org.to.telegramfinalproject.Client.ActionHandler; import java.io.File; import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.Objects; import java.util.UUID; @@ -116,13 +118,27 @@ public class ManageGroupController { groupIdField.setText(originalGroupId); if (!originalImageUrl.isBlank()) { - groupImage.setImage(new Image(originalImageUrl, true)); + String uri = resolveLocalUri(originalImageUrl); + if (uri != null) { + groupImage.setImage(new Image(uri, true)); + } } + adminCount.setText(String.valueOf(countRole(data, "admin") + 1)); memberCount.setText(String.valueOf(countRole(data, "member") + Integer.parseInt(adminCount.getText()))); } + private String resolveLocalUri(String raw) { + if (raw == null || raw.isBlank()) return null; + if (raw.startsWith("file:/") || raw.startsWith("http")) return raw; + + Path base = Paths.get(System.getProperty("user.dir"), "uploads"); + Path resolved = base.resolve(raw.startsWith("/") ? raw.substring(1) : raw) + .normalize(); + return resolved.toUri().toString(); // file:///C:/.../uploads/avatars/2025-09-05/... + } + private int countRole(JSONObject groupData, String role) { var arr = groupData.optJSONArray("members"); if (arr == null) return 0; diff --git a/uploads/avatars/2025-09-08/a01fa00f-00cc-4222-9e75-4f44fe0d6d26.jpg b/uploads/avatars/2025-09-08/a01fa00f-00cc-4222-9e75-4f44fe0d6d26.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5a371951a46235e78c5e75bcaf6b34d10b022115 GIT binary patch literal 39335 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 u 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