From b0392cd3e61b1a0640bcbef3c9645ad8e70359ee Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sun, 9 Mar 2025 07:10:15 -0400 Subject: [PATCH 01/28] [+] Unlock challenge? --- .../aqua/sega/chusan/handler/ChusanApis.kt | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt index c9280fd6..b1598524 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt @@ -27,6 +27,45 @@ fun ChusanController.chusanInit() { mapOf("type" to type, "length" to 0, "gameRankingList" to lst) } + // VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE + "GetGameCourseLevel" { + // gameCourseLevelList: [{courseId: int, startDate: date, endDate: date}] + mapOf("length" to 0, "gameCourseLevelList" to listOf( + mapOf("courseId" to 300004, "startDate" to "2019-01-01 00:00:00", "endDate" to "2077-01-01 11:45:14"), + mapOf("courseId" to 300009, "startDate" to "2019-01-01 00:00:00", "endDate" to "2077-01-01 11:45:14") + )) + } + + "GetGameUCCondition" { + val lst = listOf( + mapOf("unlockChallengeId" to 10001, "length" to 1, "conditionList" to listOf( + mapOf("type" to 1, "conditionId" to 3020798, "logicalOpe" to 1, "startDate" to "2024-03-08 01:00:00", "endDate" to "2077-01-01 11:45:14") + )), + mapOf("unlockChallengeId" to 10002, "length" to 1, "conditionList" to listOf( + mapOf("type" to 0, "conditionId" to -1, "logicalOpe" to 1, "startDate" to "2024-03-08 01:00:00", "endDate" to "2077-01-01 11:45:14") + )) + ) + mapOf("length" to lst.size, "gameUnlockChallengeConditionList" to lst) + } + + "GetUserUC".paged("userUnlockChallengeList") { + // TODO: Save and load user unlock challenge + // unlockChallengeId: int, status: int, clearCourseId: int, conditionType: int + // score: int, life: int, clearDate: date + empty + } + + "GetUserRecMusic".paged("userRecMusicList") { + // musicId: int, recMusicList: string??? + empty + } + + "GetUserRecRating".paged("userRecRatingList") { + // ratingMin: int, ratingMax: int, recMusicList: string??? + empty + } + // VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE + // Stub handlers "GetGameIdlist" { """{"type":"${data["type"]}","length":"0","gameIdlistList":[]}""" } From 6e6adb8caaee40e0a0ab006f976bf90a36117140 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sun, 9 Mar 2025 09:57:09 -0400 Subject: [PATCH 02/28] [+] Verse: Save rating --- .../samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt | 7 +++++-- .../aqua/sega/chusan/model/request/UpsertUserAll.kt | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt index e8bb3664..b8056a99 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt @@ -42,8 +42,11 @@ fun ChusanController.upsertApiInit() { fun Iterable.str() = joinToString(",") { "${it.musicId}:${it.difficultId}:${it.score}" } ls( - userRecentRatingList to "recent_rating_list", userRatingBaseList to "rating_base_list", - userRatingBaseHotList to "rating_hot_list", userRatingBaseNextList to "rating_next_list", + userRecentRatingList to "recent_rating_list", + userRatingBaseList to "rating_base_list", + userRatingBaseHotList to "rating_hot_list", + userRatingBaseNextList to "rating_next_list", + userRatingBaseNewList to "rating_new_list" ).filter { it.first != null }.forEach { (list, key) -> val d = db.userGeneralData.findByUserAndPropertyKey(u, key)() ?: UserGeneralData().apply { user = u; propertyKey = key } diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/UpsertUserAll.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/UpsertUserAll.kt index 99be8f6f..5f630794 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/UpsertUserAll.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/UpsertUserAll.kt @@ -54,6 +54,7 @@ class UpsertUserAll( var userRatingBaseHotList: List? = null, var userRatingBaseList: List? = null, var userRatingBaseNextList: List? = null, + var userRatingBaseNewList: List? = null, var userLoginBonusList: List? = null, var userMapAreaList: List? = null, var userOverPowerList: List? = null, From 6d02c53eb3cef70fd4d3baf2ac87145d7f5d076a Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sun, 9 Mar 2025 09:57:46 -0400 Subject: [PATCH 03/28] [+] Verse: Save unlock challenge --- .../sega/chusan/handler/ChusanUpsertApis.kt | 4 ++++ .../aqua/sega/chusan/model/Chu3Repos.kt | 5 +++++ .../sega/chusan/model/request/UpsertUserAll.kt | 1 + .../chusan/model/userdata/Chu3UserChallenge.kt | 18 ++++++++++++++++++ 4 files changed, 28 insertions(+) create mode 100644 src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/Chu3UserChallenge.kt diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt index b8056a99..dbe8ff86 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt @@ -124,6 +124,10 @@ fun ChusanController.upsertApiInit() { db.userDuel.saveAll(list.distinctBy { it.duelId }.mapApply { id = db.userDuel.findByUserAndDuelId(u, duelId)?.id ?: 0 }) } + userUnlockChallengeList?.let { list -> + db.userChallenge.saveAll(list.distinctBy { it.unlockChallengeId }.mapApply { + id = db.userChallenge.findByUserAndUnlockChallengeId(u, unlockChallengeId)?.id ?: 0 }) } + // Need testing // userLoginBonusList?.let { list -> // db.userLoginBonus.saveAll(list.distinctBy { it["presetId"] as String }.map { diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/model/Chu3Repos.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/model/Chu3Repos.kt index a8841c51..280978f5 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/model/Chu3Repos.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/model/Chu3Repos.kt @@ -136,6 +136,10 @@ interface Chu3NetBattleLogRepo : Chu3UserLinked { interface Chu3UserMiscRepo : Chu3UserLinked +interface Chu3UserChallengeRepo : Chu3UserLinked { + fun findByUserAndUnlockChallengeId(user: Chu3UserData, unlockChallengeId: Int): Chu3UserChallenge? +} + interface Chu3GameChargeRepo : JpaRepository interface Chu3GameEventRepo : JpaRepository { @@ -191,6 +195,7 @@ class Chu3Repos( val userCMissionProgress: Chu3UserCMissionProgressRepo, val netBattleLog: Chu3NetBattleLogRepo, val userMisc: Chu3UserMiscRepo, + val userChallenge: Chu3UserChallengeRepo, val gameCharge: Chu3GameChargeRepo, val gameEvent: Chu3GameEventRepo, val gameGachaCard: Chu3GameGachaCardRepo, diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/UpsertUserAll.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/UpsertUserAll.kt index 5f630794..2c195609 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/UpsertUserAll.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/UpsertUserAll.kt @@ -63,4 +63,5 @@ class UpsertUserAll( var userNetBattleData: List? = null, var userCMissionList: List? = null, var userFavoriteMusicList: List? = null, + var userUnlockChallengeList: List? = null, ) diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/Chu3UserChallenge.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/Chu3UserChallenge.kt new file mode 100644 index 00000000..7f0e6ef2 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/Chu3UserChallenge.kt @@ -0,0 +1,18 @@ +package icu.samnyan.aqua.sega.chusan.model.userdata + +import jakarta.persistence.Entity +import jakarta.persistence.Table +import jakarta.persistence.UniqueConstraint + + +@Entity(name = "ChusanUserChallenge") +@Table(name = "chusan_user_challenge", uniqueConstraints = [UniqueConstraint(columnNames = ["user_id", "unlock_challenge_id"])]) +class Chu3UserChallenge : Chu3UserEntity() { + var unlockChallengeId = 0 + var status = 0 + var clearCourseId = 0 + var conditionType = 0 + var score = 0 + var life = 0 + var clearDate = "" // len 20 YYYY-MM-DD HH:MM:SS +} From cc5ffdf6441b07603d4512b72e294b7943323999 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sun, 9 Mar 2025 09:58:42 -0400 Subject: [PATCH 04/28] [+] Verse: Add user data fields --- .../sega/chusan/model/userdata/Chu3UserData.kt | 4 ++++ .../resources/db/V1000_40__chusan_verse.sql | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 src/main/resources/db/V1000_40__chusan_verse.sql diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/Chu3UserData.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/Chu3UserData.kt index b357c9e5..06c1788e 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/Chu3UserData.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/Chu3UserData.kt @@ -141,6 +141,10 @@ class Chu3UserData : BaseEntity(), IUserData { @JsonInclude(JsonInclude.Include.NON_NULL) @Transient var userEmoney: UserEmoney? = null + + // VERSE + var trophyIdSub1 = 0 + var trophyIdSub2 = 0 override val totalScore get() = totalHiScore } diff --git a/src/main/resources/db/V1000_40__chusan_verse.sql b/src/main/resources/db/V1000_40__chusan_verse.sql new file mode 100644 index 00000000..ea17e466 --- /dev/null +++ b/src/main/resources/db/V1000_40__chusan_verse.sql @@ -0,0 +1,17 @@ +ALTER TABLE chusan_user_data ADD COLUMN trophy_id_sub1 INT NOT NULL DEFAULT 0; +ALTER TABLE chusan_user_data ADD COLUMN trophy_id_sub2 INT NOT NULL DEFAULT 0; + +CREATE TABLE chusan_user_challenge +( + id BIGINT AUTO_INCREMENT NOT NULL PRIMARY KEY, + user_id BIGINT NOT NULL, + unlock_challenge_id INT NOT NULL, + status INT NOT NULL, + clear_course_id INT NOT NULL, + condition_type INT NOT NULL, + score INT NOT NULL, + life INT NOT NULL, + clear_date VARCHAR(20) NULL, + CONSTRAINT fku_chusan_user_challenge FOREIGN KEY (user_id) REFERENCES chusan_user_data (id) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT unique_user_challenge UNIQUE (user_id, unlock_challenge_id) +); From 9ac4b56ef7bd49aa8c65f130742d4790b316da73 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sun, 9 Mar 2025 10:00:37 -0400 Subject: [PATCH 05/28] [+] Verse: Return user challenge --- .../java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt index b1598524..cf8bb351 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt @@ -49,10 +49,9 @@ fun ChusanController.chusanInit() { } "GetUserUC".paged("userUnlockChallengeList") { - // TODO: Save and load user unlock challenge // unlockChallengeId: int, status: int, clearCourseId: int, conditionType: int // score: int, life: int, clearDate: date - empty + db.userChallenge.findByUser_Card_ExtId(uid) } "GetUserRecMusic".paged("userRecMusicList") { From 8bbde9e7e346c809a3edc932945d5271f6d92fee Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sun, 9 Mar 2025 10:07:00 -0400 Subject: [PATCH 06/28] [F] Verse: Fix userid null --- .../icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt index dbe8ff86..36425071 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt @@ -35,7 +35,7 @@ fun ChusanController.upsertApiInit() { listOfNotNull( userPlaylogList, userGameOption, userMapAreaList, userCharacterList, userItemList, userMusicDetailList, userActivityList, userChargeList, userCourseList, userDuelList, - userNetBattlelogList + userNetBattlelogList, userUnlockChallengeList ).flatten().forEach { it.user = u } // Ratings From 226ba475aa67ed93dde1f7a83a62a46843510890 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sun, 9 Mar 2025 10:19:39 -0400 Subject: [PATCH 07/28] [+] Verse: Generalize AI recommender --- tools/recommend.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/tools/recommend.py b/tools/recommend.py index 10c475c6..7564894f 100644 --- a/tools/recommend.py +++ b/tools/recommend.py @@ -12,17 +12,16 @@ import implicit from hypy_utils.logging_utils import setup_logger BASE_URL = "https://aquadx.net/aqua/api/v2/game" -GAME = "mai2" BOT_SECRET = "hunter2" log = setup_logger() -if __name__ == '__main__': +def main(game: str): # Load the CSV data log.info("Loading data...") # data = pd.read_csv("data.csv") - resp = requests.get(f"{BASE_URL}/{GAME}/recommender-fetch", params={"botSecret": BOT_SECRET}) + resp = requests.get(f"{BASE_URL}/{game}/recommender-fetch", params={"botSecret": BOT_SECRET}) assert resp.status_code == 200, f"Failed to fetch data: {resp.status_code} {resp.text}" data = pd.read_csv(StringIO(resp.text)) @@ -48,4 +47,13 @@ if __name__ == '__main__': # Save recommendations to a file log.info("Saving recommendations...") # Path("recommendations.json").write_text(json.dumps(recommendations)) - resp = requests.post(f"{BASE_URL}/{GAME}/recommender-update", params={"botSecret": BOT_SECRET}, json=recommendations) + resp = requests.post(f"{BASE_URL}/{game}/recommender-update", params={"botSecret": BOT_SECRET}, json=recommendations) + if resp.status_code != 200: + log.error(f"Failed to update recommendations: {resp.status_code} {resp.text}") + + log.info("Done!") + + +if __name__ == '__main__': + main("mai2") + main("chu3") From d983d7a5f515992df95047dd2b3ac3e7efbd646f Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sun, 9 Mar 2025 10:27:15 -0400 Subject: [PATCH 08/28] [+] Verse: Return recommended music --- .../icu/samnyan/aqua/sega/chusan/ChusanController.kt | 2 ++ .../icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt | 9 +++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanController.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanController.kt index 15cf24ff..03444005 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanController.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanController.kt @@ -2,6 +2,7 @@ package icu.samnyan.aqua.sega.chusan import ext.* import icu.samnyan.aqua.net.db.AquaUserServices +import icu.samnyan.aqua.net.games.chu3.Chusan import icu.samnyan.aqua.net.utils.simpleDescribe import icu.samnyan.aqua.sega.allnet.TokenChecker import icu.samnyan.aqua.sega.chusan.handler.chusanInit @@ -31,6 +32,7 @@ class ChusanController( val versionHelper: ChusanVersionHelper, val props: ChusanProps, val pop: GameMusicPopularity, + val chusan: Chusan ): MeowApi({ api, resp -> if (resp is String) resp else (if ("CM" in api) cmMapper else mapper).write(resp) diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt index cf8bb351..69915d36 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt @@ -55,8 +55,13 @@ fun ChusanController.chusanInit() { } "GetUserRecMusic".paged("userRecMusicList") { - // musicId: int, recMusicList: string??? - empty + // musicId: int, recMusicList: string + +// listOf( +// mapOf("musicId" to "2630", "recMusicList" to "2387,1"), +// ) + val list = (chusan.recommendedMusic[uid] ?: empty) + list.map { mapOf("musicId" to it, "recMusicList" to "$it,1") } } "GetUserRecRating".paged("userRecRatingList") { From 47a508e8a9b9735cebdac68ce542848f414808cd Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sun, 9 Mar 2025 10:54:46 -0400 Subject: [PATCH 09/28] [F] Verse: Fix id mismatch in recommend music --- .../icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt index 69915d36..d3924a62 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt @@ -56,11 +56,8 @@ fun ChusanController.chusanInit() { "GetUserRecMusic".paged("userRecMusicList") { // musicId: int, recMusicList: string - -// listOf( -// mapOf("musicId" to "2630", "recMusicList" to "2387,1"), -// ) - val list = (chusan.recommendedMusic[uid] ?: empty) + val u = db.userData.findByCard_ExtId(uid)() ?: return@paged empty + val list = (chusan.recommendedMusic[u.id] ?: empty) list.map { mapOf("musicId" to it, "recMusicList" to "$it,1") } } From e1d33691b48e1d453638c8c00b591b02f278f34b Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sun, 9 Mar 2025 10:57:49 -0400 Subject: [PATCH 10/28] [+] Verse: Model inference progress bar --- tools/recommend.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/recommend.py b/tools/recommend.py index 7564894f..ef487ef2 100644 --- a/tools/recommend.py +++ b/tools/recommend.py @@ -10,6 +10,7 @@ import requests import scipy.sparse as sp import implicit from hypy_utils.logging_utils import setup_logger +from tqdm import tqdm BASE_URL = "https://aquadx.net/aqua/api/v2/game" BOT_SECRET = "hunter2" @@ -40,7 +41,7 @@ def main(game: str): # Generate recommendations for each user log.info("Generating recommendations...") recommendations = {} - for user_id in range(user_item_matrix.shape[0]): # Loop over all users + for user_id in tqdm(list(range(user_item_matrix.shape[0]))): # Loop over all users rec, prob = model.recommend(user_id, user_item_matrix[user_id], N=20) recommendations[user_id] = [int(item) for item in rec] From 6bdfab6cba8ff6564394d583eabad666059caaf7 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sun, 9 Mar 2025 11:25:24 -0400 Subject: [PATCH 11/28] [F] Verse: FIx recommendation return format --- .../java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt index d3924a62..e236871b 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt @@ -56,9 +56,10 @@ fun ChusanController.chusanInit() { "GetUserRecMusic".paged("userRecMusicList") { // musicId: int, recMusicList: string + // musicId cannot be the same with the id in recMusicList val u = db.userData.findByCard_ExtId(uid)() ?: return@paged empty - val list = (chusan.recommendedMusic[u.id] ?: empty) - list.map { mapOf("musicId" to it, "recMusicList" to "$it,1") } + val list = (chusan.recommendedMusic[u.id] ?: ls()).filter { it != 1 } + ls(mapOf("musicId" to 1, "recMusicList" to list.joinToString(";") { "$it,1" })) } "GetUserRecRating".paged("userRecRatingList") { From 44f62e8f544b5bc0a09a1f3a19f6b7fc9a684cfc Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sun, 9 Mar 2025 11:36:37 -0400 Subject: [PATCH 12/28] [F] Verse: Fix list empty case --- .../java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt index e236871b..1669e3a1 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt @@ -59,7 +59,9 @@ fun ChusanController.chusanInit() { // musicId cannot be the same with the id in recMusicList val u = db.userData.findByCard_ExtId(uid)() ?: return@paged empty val list = (chusan.recommendedMusic[u.id] ?: ls()).filter { it != 1 } - ls(mapOf("musicId" to 1, "recMusicList" to list.joinToString(";") { "$it,1" })) + + if (list.isEmpty()) empty + else ls(mapOf("musicId" to 1, "recMusicList" to list.joinToString(";") { "$it,1" })) } "GetUserRecRating".paged("userRecRatingList") { From 5816f5dffbef94591eaf76d55b3f673ef16d6e0c Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sun, 9 Mar 2025 11:37:14 -0400 Subject: [PATCH 13/28] [-] Verse: Give up on rec rating --- .../icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt index 1669e3a1..73f4e354 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt @@ -59,13 +59,17 @@ fun ChusanController.chusanInit() { // musicId cannot be the same with the id in recMusicList val u = db.userData.findByCard_ExtId(uid)() ?: return@paged empty val list = (chusan.recommendedMusic[u.id] ?: ls()).filter { it != 1 } - + if (list.isEmpty()) empty else ls(mapOf("musicId" to 1, "recMusicList" to list.joinToString(";") { "$it,1" })) } "GetUserRecRating".paged("userRecRatingList") { - // ratingMin: int, ratingMax: int, recMusicList: string??? + // ratingMin: int, ratingMax: int, recMusicList: string + // This doesn't work +// listOf( +// mapOf("ratingMin" to 0, "ratingMax" to 30, "recMusicList" to "2387,1;2658,1") +// ) empty } // VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE VERSE From 9d8a3c51327fd3debe56e4ed38276b52c9facbc8 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Mon, 10 Mar 2025 02:41:30 -0400 Subject: [PATCH 14/28] Update README.md --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 3cccfdbb..4064094b 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Below is a list of games supported by this server. | Game | Ver | Codename | Thanks to | |------------------------|------|---------------------|--------------------------------------------| -| SDHD: CHUNITHM | 2.30 | VERSE¹ | [@rinsama](https://github.com/mxihan) | +| SDHD: CHUNITHM | 2.30 | VERSE | [@rinsama](https://github.com/mxihan) | | SDEZ: MaiMai DX | 1.50 | PRiSM | [@肥宅虾哥](https://github.com/FeiZhaixiage) | | SDGA: MaiMai DX (Intl) | 1.50 | PRiSM | [@Clansty](https://github.com/clansty) | | SDED: Card Maker | 1.39 | | [@Becods](https://github.com/Becods) | @@ -41,8 +41,6 @@ Below is a list of games supported by this server. | SBZV: Project DIVA | 7.10 | Future Tone | | | SDFE: Wacca (*ALPHA) | 3.07 | Reverse | | -* ¹: For VERSE, normal gameplay works, but events and new features might be missing. Luminous+ and older are fully supported. - Check out these docs for more information. * [Game specific notes](docs/game_specific_notes.md) * [Frequently asked questions](docs/frequently_asked_questions.md) From c2cd281efef65af514532769bdffb73b5a3abb2b Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Tue, 11 Mar 2025 01:51:22 -0400 Subject: [PATCH 15/28] [U] Automatic deploy docker every week --- .github/workflows/docker-image.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index ea81abf6..291a4fbb 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -6,6 +6,8 @@ on: branches: - main workflow_dispatch: + schedule: + - cron: '0 0 * * 0' # Runs at midnight UTC every Sunday jobs: build-and-push: From 0c891218b20279cf34ada217cc2b3debf6423e23 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Tue, 11 Mar 2025 08:03:10 -0400 Subject: [PATCH 16/28] [+] new rating list --- src/main/java/icu/samnyan/aqua/net/games/chu3/Chusan.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/icu/samnyan/aqua/net/games/chu3/Chusan.kt b/src/main/java/icu/samnyan/aqua/net/games/chu3/Chusan.kt index c5889a11..7a7d8c0d 100644 --- a/src/main/java/icu/samnyan/aqua/net/games/chu3/Chusan.kt +++ b/src/main/java/icu/samnyan/aqua/net/games/chu3/Chusan.kt @@ -52,6 +52,7 @@ class Chusan( "best30" to (extra["rating_base_list"] ?: ""), "hot10" to (extra["rating_hot_list"] ?: ""), "next10" to (extra["rating_next_list"] ?: ""), + "new" to (extra["rating_new_list"] ?: ""), ) genericUserSummary(card, ratingComposition) From 1dcaddb4c4136557127a9ea38f3516da70edc1f9 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Tue, 11 Mar 2025 08:15:19 -0400 Subject: [PATCH 17/28] [+] New20 --- AquaNet/src/pages/UserHome.svelte | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/AquaNet/src/pages/UserHome.svelte b/AquaNet/src/pages/UserHome.svelte index 455b36e3..e8b9b645 100644 --- a/AquaNet/src/pages/UserHome.svelte +++ b/AquaNet/src/pages/UserHome.svelte @@ -318,7 +318,13 @@ - + + {#if d.user.ratingComposition.new} + + {:else} + + {/if} +

{t('UserHome.RecentScores')}

From 5bf017395c46f844d17378e4934cda478503b978 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Tue, 11 Mar 2025 23:33:23 -0400 Subject: [PATCH 18/28] [+] Return the trophy sub 1 2 for userbox --- src/main/java/icu/samnyan/aqua/net/games/chu3/Chusan.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/icu/samnyan/aqua/net/games/chu3/Chusan.kt b/src/main/java/icu/samnyan/aqua/net/games/chu3/Chusan.kt index 7a7d8c0d..7cbbfa30 100644 --- a/src/main/java/icu/samnyan/aqua/net/games/chu3/Chusan.kt +++ b/src/main/java/icu/samnyan/aqua/net/games/chu3/Chusan.kt @@ -29,6 +29,8 @@ class Chusan( "nameplateId" to { u, v -> u.nameplateId = v.int }, "frameId" to { u, v -> u.frameId = v.int }, "trophyId" to { u, v -> u.trophyId = v.int }, + "trophyIdSub1" to { u, v -> u.trophyIdSub1 = v.int }, + "trophyIdSub2" to { u, v -> u.trophyIdSub2 = v.int }, "mapIconId" to { u, v -> u.mapIconId = v.int }, "voiceId" to { u, v -> u.voiceId = v.int }, "avatarWear" to { u, v -> u.avatarWear = v.int }, From 9b8a76349f8532762248e3d817437cbd2ec849c2 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Wed, 12 Mar 2025 01:29:01 -0400 Subject: [PATCH 19/28] [U] Update FAQ --- docs/chu3-national-matching.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/chu3-national-matching.md b/docs/chu3-national-matching.md index c766900c..2799064a 100644 --- a/docs/chu3-national-matching.md +++ b/docs/chu3-national-matching.md @@ -45,6 +45,10 @@ netsh advfirewall firewall add rule name="Chunithm National Matching Outbound" d ## Troubleshooting +**Q: Me and my friend are queuing but we can't join the same room** + +Make sure you both have the same ROM and options (e.g. it would not work if you have luminuous and they have verse, or if you have A121 while they don't). + **Q: Matching server BAD on network check** Make sure you have selected "Yukiotoko" as your matching server. From e54619da46776db993750cf70348885d1aab7f24 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Wed, 12 Mar 2025 01:32:38 -0400 Subject: [PATCH 20/28] [U] Update doc --- docs/chu3-national-matching.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/chu3-national-matching.md b/docs/chu3-national-matching.md index 2799064a..ddf23a4f 100644 --- a/docs/chu3-national-matching.md +++ b/docs/chu3-national-matching.md @@ -49,6 +49,9 @@ netsh advfirewall firewall add rule name="Chunithm National Matching Outbound" d Make sure you both have the same ROM and options (e.g. it would not work if you have luminuous and they have verse, or if you have A121 while they don't). +> [!NOTE] +> If you just updated your options, your matching will be disabled because of data version mismatch. You need to play for a session, save, and then restart your game for the server-side data version to update. + **Q: Matching server BAD on network check** Make sure you have selected "Yukiotoko" as your matching server. From 6fe9fbb6cc2b9b0cc2e9724f3e611c93bbda8179 Mon Sep 17 00:00:00 2001 From: Raymond <101374892+raymonable@users.noreply.github.com> Date: Wed, 12 Mar 2025 00:09:12 -0400 Subject: [PATCH 21/28] feat: add sub trophies for VERSE!!!!! --- AquaNet/src/components/settings/ChuniSettings.svelte | 6 +++++- AquaNet/src/libs/generalTypes.ts | 2 ++ AquaNet/src/libs/i18n/en_ref.ts | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/AquaNet/src/components/settings/ChuniSettings.svelte b/AquaNet/src/components/settings/ChuniSettings.svelte index c03116f3..ba525f51 100644 --- a/AquaNet/src/components/settings/ChuniSettings.svelte +++ b/AquaNet/src/components/settings/ChuniSettings.svelte @@ -34,7 +34,7 @@ // Available (unlocked) options for each kind of item // In allItems: 'namePlate', 'frame', 'trophy', 'mapIcon', 'systemVoice', 'avatarAccessory' let allItems: Record> = {} - let iKinds = { namePlate: 1, frame: 2, trophy: 3, mapIcon: 8, systemVoice: 9, avatarAccessory: 11 } + let iKinds = { namePlate: 1, frame: 2, trophy: 3, trophySub1: 4, trophySub2: 5, mapIcon: 8, systemVoice: 9, avatarAccessory: 11 } // In userbox: 'nameplateId', 'frameId', 'trophyId', 'mapIconId', 'voiceId', 'avatar{Wear/Head/Face/Skin/Item/Front/Back}' let userbox: UserBox let avatarKinds = ['Wear', 'Head', 'Face', 'Skin', 'Item', 'Front', 'Back'] as const @@ -66,6 +66,10 @@ userItems = Object.entries(iKinds).flatMap(([iKey, iKind]) => { if (iKey != 'avatarAccessory') { let ubKey = `${iKey}Id` + if (iKey.slice('trophy'.length, 'trophy'.length + 3) == "Sub") { + ubKey = `trophyIdSub${iKey.slice('trophySub'.length, 'trophySub'.length + 1)}`; + iKey = `trophy`; + } if (ubKey == 'namePlateId') ubKey = 'nameplateId' if (ubKey == 'systemVoiceId') ubKey = 'voiceId' return [{ iKey, ubKey: ubKey as keyof UserBox, diff --git a/AquaNet/src/libs/generalTypes.ts b/AquaNet/src/libs/generalTypes.ts index 99e72948..f32b0a04 100644 --- a/AquaNet/src/libs/generalTypes.ts +++ b/AquaNet/src/libs/generalTypes.ts @@ -140,6 +140,8 @@ export interface UserBox { frameId: number, characterId: number, trophyId: number, + trophyIdSub1: number, + trophyIdSub2: number, mapIconId: number, voiceId: number, avatarWear: number, diff --git a/AquaNet/src/libs/i18n/en_ref.ts b/AquaNet/src/libs/i18n/en_ref.ts index c739b575..3d95b0df 100644 --- a/AquaNet/src/libs/i18n/en_ref.ts +++ b/AquaNet/src/libs/i18n/en_ref.ts @@ -191,6 +191,8 @@ export const EN_REF_USERBOX = { 'userbox.nameplateId': 'Nameplate', 'userbox.frameId': 'Frame', 'userbox.trophyId': 'Trophy (Title)', + 'userbox.trophyIdSub1': 'Trophy Sub #1 (Title)', + 'userbox.trophyIdSub2': 'Trophy Sub #2 (Title)', 'userbox.mapIconId': 'Map Icon', 'userbox.voiceId': 'System Voice', 'userbox.avatarWear': 'Avatar Wear', From 072e3519bbbd869af4a9ad757408017561902fc1 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sat, 15 Mar 2025 19:18:25 -0400 Subject: [PATCH 22/28] [+] Allow overriding PowerOn addr --- src/main/java/icu/samnyan/aqua/sega/allnet/AllNet.kt | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/java/icu/samnyan/aqua/sega/allnet/AllNet.kt b/src/main/java/icu/samnyan/aqua/sega/allnet/AllNet.kt index 1cd8c4b8..c243c320 100644 --- a/src/main/java/icu/samnyan/aqua/sega/allnet/AllNet.kt +++ b/src/main/java/icu/samnyan/aqua/sega/allnet/AllNet.kt @@ -96,7 +96,7 @@ class AllNet( @PostMapping("/sys/servlet/PowerOn", produces = ["text/plain"]) fun powerOn(dataStream: InputStream, req: HttpServletRequest): String { - val localAddr = req.localAddr + val here = req.getHeader("AllNet-Forwarded-From") ?: props.host.ifBlank { req.localAddr } val localPort = req.localPort.toString() // game_id SDEZ, ver 1.35, serial A0000001234, ip, firm_ver 50000, boot_ver 0000, @@ -138,8 +138,8 @@ class AllNet( val formatVer = reqMap["format_ver"] ?: "" val resp = props.map.mut + mapOf( - "uri" to switchUri(localAddr, localPort, gameId, ver, session), - "host" to props.host.ifBlank { localAddr }, + "uri" to switchUri(here, localPort, gameId, ver, session), + "host" to props.host.ifBlank { here }, ) // Different responses for different versions @@ -171,9 +171,8 @@ class AllNet( return resp.toUrl() + "\n" } - private fun switchUri(localAddr: Str, localPort: Str, gameId: Str, ver: Str, session: Str?): Str { - val addr = props.host.ifBlank { localAddr } + - if (props.hidePort) "" else ":${props.port ?: localPort}" + private fun switchUri(hereAddr: Str, localPort: Str, gameId: Str, ver: Str, session: Str?): Str { + val addr = hereAddr + (if (props.hidePort) "" else ":${props.port ?: localPort}") // If keychip authentication is enabled, the game URLs will be set to /gs/{token}/{game}/... val base = if (session != null) "gs/$session" else "g" From a076d50cb34c1437a65265a4fc533e54b73f5f04 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sat, 15 Mar 2025 20:40:10 -0400 Subject: [PATCH 23/28] Update gradle.yml --- .github/workflows/gradle.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index b0d54599..395ca244 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -9,19 +9,17 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up JDK uses: actions/setup-java@v3 with: - java-version: '17' + java-version: '21' distribution: 'temurin' - server-id: github - - - name: Setup Gradle - uses: gradle/gradle-build-action@v2 - name: Build with Gradle run: | mkdir data + bash ./src/main/resources/meta/update.sh + chmod +x gradlew ./gradlew build From 3ac6d7964443a6a982c9234151787a47de9c2cbf Mon Sep 17 00:00:00 2001 From: MoeGrid Date: Sun, 16 Mar 2025 19:56:14 +0800 Subject: [PATCH 24/28] =?UTF-8?q?=E5=B0=86config.ts=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E9=83=A8=E5=88=86=E9=85=8D=E7=BD=AE=E7=A7=BB=E5=8A=A8=E5=88=B0?= =?UTF-8?q?.env=E4=B8=AD=EF=BC=8C=E6=96=B9=E4=BE=BF=E7=A7=81=E6=9C=89?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E3=80=82=20=E5=B0=86public=E4=B8=AD=E7=9A=84?= =?UTF-8?q?psd=E6=96=87=E4=BB=B6=E7=A7=BB=E5=87=BA=EF=BC=8C=E9=98=B2?= =?UTF-8?q?=E6=AD=A2=E8=A2=AB=E6=89=93=E5=8C=85=E5=88=B0dist=E3=80=82=20?= =?UTF-8?q?=E5=88=A4=E6=96=ADTURNSTILE=5FSITE=5FKEY=E4=B8=BA=E7=A9=BA?= =?UTF-8?q?=E6=97=B6=E4=B8=8D=E5=BC=80=E5=90=AF=E6=AD=A4=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AquaNet/.env | 9 +++++++++ AquaNet/.gitignore | 5 ++++- .../{public/assets => psd}/icons/AquaDX Cat.psd | Bin AquaNet/{public/assets => psd}/icons/Icon.psd | Bin .../{public/assets => psd}/imgs/All Perfect.psd | Bin .../{public/assets => psd}/imgs/Full Combo.psd | Bin AquaNet/{public/assets => psd}/imgs/no_cover.psd | Bin .../{public/assets => psd}/imgs/no_profile.psd | Bin AquaNet/src/libs/config.ts | 14 +++++++------- AquaNet/src/pages/Welcome.svelte | 4 +++- 10 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 AquaNet/.env rename AquaNet/{public/assets => psd}/icons/AquaDX Cat.psd (100%) rename AquaNet/{public/assets => psd}/icons/Icon.psd (100%) rename AquaNet/{public/assets => psd}/imgs/All Perfect.psd (100%) rename AquaNet/{public/assets => psd}/imgs/Full Combo.psd (100%) rename AquaNet/{public/assets => psd}/imgs/no_cover.psd (100%) rename AquaNet/{public/assets => psd}/imgs/no_profile.psd (100%) diff --git a/AquaNet/.env b/AquaNet/.env new file mode 100644 index 00000000..dbc79813 --- /dev/null +++ b/AquaNet/.env @@ -0,0 +1,9 @@ +VITE_AQUA_HOST=https://aquadx.net/aqua +VITE_DATA_HOST=https://aquadx.net + +VITE_AQUA_CONNECTION=aquadx.hydev.org + +VITE_TURNSTILE_SITE_KEY=0x4AAAAAAASGA2KQEIelo9P9 +VITE_DISCORD_INVITE=https://discord.gg/FNgveqFF7s +VITE_TELEGRAM_INVITE=https://t.me/+zBL4RZdyfvUzZGU1 +VITE_QQ_INVITE=https://qm.qq.com/q/wvNXbXbHbO diff --git a/AquaNet/.gitignore b/AquaNet/.gitignore index 20ffbea5..69166fea 100644 --- a/AquaNet/.gitignore +++ b/AquaNet/.gitignore @@ -32,4 +32,7 @@ dist-ssr !.yarn/sdks !.yarn/versions -public/chu3 \ No newline at end of file +public/chu3 + +# local env file +*.local \ No newline at end of file diff --git a/AquaNet/public/assets/icons/AquaDX Cat.psd b/AquaNet/psd/icons/AquaDX Cat.psd similarity index 100% rename from AquaNet/public/assets/icons/AquaDX Cat.psd rename to AquaNet/psd/icons/AquaDX Cat.psd diff --git a/AquaNet/public/assets/icons/Icon.psd b/AquaNet/psd/icons/Icon.psd similarity index 100% rename from AquaNet/public/assets/icons/Icon.psd rename to AquaNet/psd/icons/Icon.psd diff --git a/AquaNet/public/assets/imgs/All Perfect.psd b/AquaNet/psd/imgs/All Perfect.psd similarity index 100% rename from AquaNet/public/assets/imgs/All Perfect.psd rename to AquaNet/psd/imgs/All Perfect.psd diff --git a/AquaNet/public/assets/imgs/Full Combo.psd b/AquaNet/psd/imgs/Full Combo.psd similarity index 100% rename from AquaNet/public/assets/imgs/Full Combo.psd rename to AquaNet/psd/imgs/Full Combo.psd diff --git a/AquaNet/public/assets/imgs/no_cover.psd b/AquaNet/psd/imgs/no_cover.psd similarity index 100% rename from AquaNet/public/assets/imgs/no_cover.psd rename to AquaNet/psd/imgs/no_cover.psd diff --git a/AquaNet/public/assets/imgs/no_profile.psd b/AquaNet/psd/imgs/no_profile.psd similarity index 100% rename from AquaNet/public/assets/imgs/no_profile.psd rename to AquaNet/psd/imgs/no_profile.psd diff --git a/AquaNet/src/libs/config.ts b/AquaNet/src/libs/config.ts index da9e5e70..3f62b182 100644 --- a/AquaNet/src/libs/config.ts +++ b/AquaNet/src/libs/config.ts @@ -1,15 +1,15 @@ import type { ChusanMatchingOption } from "./generalTypes" -export const AQUA_HOST = 'https://aquadx.net/aqua' -export const DATA_HOST = 'https://aquadx.net' +export const AQUA_HOST = import.meta.env.VITE_AQUA_HOST +export const DATA_HOST = import.meta.env.VITE_DATA_HOST // This will be displayed for users to connect from the client -export const AQUA_CONNECTION = 'aquadx.hydev.org' +export const AQUA_CONNECTION = import.meta.env.VITE_AQUA_CONNECTION -export const TURNSTILE_SITE_KEY = '0x4AAAAAAASGA2KQEIelo9P9' -export const DISCORD_INVITE = 'https://discord.gg/FNgveqFF7s' -export const TELEGRAM_INVITE = 'https://t.me/+zBL4RZdyfvUzZGU1' -export const QQ_INVITE = 'https://qm.qq.com/q/wvNXbXbHbO' +export const TURNSTILE_SITE_KEY = import.meta.env.VITE_TURNSTILE_SITE_KEY +export const DISCORD_INVITE = import.meta.env.VITE_DISCORD_INVITE +export const TELEGRAM_INVITE = import.meta.env.VITE_TELEGRAM_INVITE +export const QQ_INVITE = import.meta.env.VITE_QQ_INVITE // UI export const FADE_OUT = { duration: 200 } diff --git a/AquaNet/src/pages/Welcome.svelte b/AquaNet/src/pages/Welcome.svelte index 1af1ae4c..669c56eb 100644 --- a/AquaNet/src/pages/Welcome.svelte +++ b/AquaNet/src/pages/Welcome.svelte @@ -51,7 +51,7 @@ return submitting = false } - if (turnstile === "") { + if (TURNSTILE_SITE_KEY && turnstile === "") { // Sleep for 100ms to allow Turnstile to finish error = t("welcome.waiting-turnstile") return setTimeout(submit, 100) @@ -137,11 +137,13 @@ {isSignup ? t('welcome.btn-signup') : t('welcome.btn-login')} {/if} + {#if TURNSTILE_SITE_KEY} console.log(turnstile = e.detail.token)} on:turnstile-error={_ => console.log(error = t("welcome.turnstile-error"))} on:turnstile-expired={_ => window.location.reload()} on:turnstile-timeout={_ => console.log(error = t('welcome.turnstile-timeout'))} /> + {/if}
{:else if state === "verify"}