Do not use username setting

This commit is contained in:
PabloMK7 2026-07-10 00:18:34 +02:00
parent d21fc62366
commit 51c3ad08f0
14 changed files with 57 additions and 31 deletions

View File

@ -76,7 +76,7 @@ class ChatDialog(context: Context) : BottomSheetDialog(context) {
}
private fun sendMessage(message: String) {
val username = NetPlayManager.getUsername(context)
val username = NetPlayManager.getUsername()
NetPlayManager.netPlaySendMessage(message)
val chatMessage = ChatMessage(

View File

@ -123,7 +123,7 @@ class LobbyBrowser(context: Context) : BottomSheetDialog(context) {
}
private fun joinRoom(room: NetPlayManager.RoomInfo, password: String) {
val username = NetPlayManager.getUsername(context)
val username = NetPlayManager.getUsername()
Thread {
val result = NetPlayManager.netPlayJoinRoom(room.ip, room.port, username, password)

View File

@ -102,6 +102,15 @@ class NetPlayDialog(context: Context) : BottomSheetDialog(context) {
dismiss()
}
btnLobbyBrowser.setOnClickListener {
if (!NetPlayManager.isUsernameValid()) {
Toast.makeText(
it.context,
it.context.getString(R.string.username_invalid),
Toast.LENGTH_LONG
).show()
return@setOnClickListener
}
LobbyBrowser(context).show()
dismiss()
}
@ -178,9 +187,9 @@ class NetPlayDialog(context: Context) : BottomSheetDialog(context) {
PopupMenu(view.context, view).apply {
inflate(R.menu.menu_netplay_member)
menu.findItem(R.id.action_kick).isEnabled =
isModerator && netPlayItems.name != NetPlayManager.getUsername(context)
isModerator && netPlayItems.name != NetPlayManager.getUsername()
menu.findItem(R.id.action_ban).isEnabled =
isModerator && netPlayItems.name != NetPlayManager.getUsername(context)
isModerator && netPlayItems.name != NetPlayManager.getUsername()
setOnMenuItemClickListener { item ->
if (item.itemId == R.id.action_kick) {
NetPlayManager.netPlayKickUser(netPlayItems.name)
@ -322,7 +331,7 @@ class NetPlayDialog(context: Context) : BottomSheetDialog(context) {
}
)
binding.ipPort.setText(NetPlayManager.getRoomPort(activity))
binding.username.setText(NetPlayManager.getUsername(activity))
binding.username.setText(NetPlayManager.getUsername())
binding.dropdownPreferedGameName.apply {
setAdapter(ArrayAdapter(activity, R.layout.dropdown_item, gameNameList.map { it[0] }))
@ -341,7 +350,25 @@ class NetPlayDialog(context: Context) : BottomSheetDialog(context) {
context.getString(R.string.multiplayer_max_players_value, value.toInt())
}
binding.username.setOnClickListener {
Toast.makeText(
it.context,
it.context.getString(R.string.username_uses_system),
Toast.LENGTH_LONG
).show()
true
}
binding.btnConfirm.setOnClickListener {
if (!NetPlayManager.isUsernameValid()) {
Toast.makeText(
it.context,
it.context.getString(R.string.username_invalid),
Toast.LENGTH_LONG
).show()
return@setOnClickListener
}
binding.btnConfirm.isEnabled = false
binding.btnConfirm.text = activity.getString(R.string.disabled_button_text)
@ -404,7 +431,6 @@ class NetPlayDialog(context: Context) : BottomSheetDialog(context) {
}
if (result == 0) {
NetPlayManager.setUsername(activity, username)
NetPlayManager.setRoomPort(activity, portStr)
if (!isCreateRoom) NetPlayManager.setRoomAddress(activity, ipAddress)
Toast.makeText(

View File

@ -128,7 +128,6 @@ object SettingKeys {
external fun udp_pad_index(): String
external fun record_frame_times(): String
external fun web_api_url(): String
external fun network_username(): String
external fun network_token(): String
// Android

View File

@ -27,7 +27,6 @@ enum class StringSetting(
"_back"
),
WEB_API_URL(SettingKeys.web_api_url(), Settings.SECTION_NETWORK, ""),
NETWORK_USERNAME(SettingKeys.network_username(), Settings.SECTION_NETWORK, "Azahar"),
NETWORK_TOKEN(SettingKeys.network_token(), Settings.SECTION_NETWORK, "");
override var string: String = defaultValue

View File

@ -15,7 +15,6 @@ import android.text.TextUtils
import androidx.preference.PreferenceManager
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.citra.citra_emu.CitraApplication
import org.citra.citra_emu.NativeLibrary
import org.citra.citra_emu.R
import org.citra.citra_emu.display.ScreenLayout
import org.citra.citra_emu.display.StereoMode
@ -1762,7 +1761,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
}
}
private fun addNetworkSettings (sl: ArrayList<SettingsItem>) {
private fun addNetworkSettings(sl: ArrayList<SettingsItem>) {
settingsActivity.setToolbarTitle(settingsActivity.getString(R.string.preferences_network))
sl.apply {
add(
@ -1771,7 +1770,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
R.string.web_api_url,
R.string.web_api_url_description,
StringSetting.WEB_API_URL.key,
StringSetting.WEB_API_URL.defaultValue,
StringSetting.WEB_API_URL.defaultValue
)
)
add(
@ -1780,7 +1779,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
R.string.network_token,
R.string.network_token_description,
StringSetting.NETWORK_TOKEN.key,
StringSetting.NETWORK_TOKEN.defaultValue,
StringSetting.NETWORK_TOKEN.defaultValue
)
)
}

View File

@ -76,6 +76,8 @@ object NetPlayManager {
private var messageListener: ((Int, String) -> Unit)? = null
private var adapterRefreshListener: ((Int, String) -> Unit)? = null
private val usernameRegex = Regex("^[a-zA-Z0-9._\\- ]{4,20}$")
fun setOnMessageReceivedListener(listener: (Int, String) -> Unit) {
messageListener = listener
}
@ -129,16 +131,12 @@ object NetPlayManager {
adapterRefreshListener = listener
}
fun getUsername(activity: Context): String {
val prefs = PreferenceManager.getDefaultSharedPreferences(activity)
val name = "Azahar${(Math.random() * 100).toInt()}"
return prefs.getString("NetPlayUsername", name) ?: name
fun getUsername(): String {
SystemSaveGame.load()
return SystemSaveGame.getUsername()
}
fun setUsername(activity: Activity, name: String) {
val prefs = PreferenceManager.getDefaultSharedPreferences(activity)
prefs.edit().putString("NetPlayUsername", name).apply()
}
fun isUsernameValid(): Boolean = getUsername().matches(usernameRegex)
fun getRoomAddress(activity: Activity): String {
val prefs = PreferenceManager.getDefaultSharedPreferences(activity)

View File

@ -330,8 +330,7 @@ void Config::ReadValues() {
// Web Service
ReadSetting("WebService", Settings::values.web_api_url);
ReadSetting("WebService", Settings::values.citra_username);
ReadSetting("WebService", Settings::values.citra_token);
ReadSetting("WebService", Settings::values.network_token);
}
void Config::Reload() {

View File

@ -583,8 +583,7 @@ static const char* android_config_default_file_content = (BOOST_HANA_STRING(R"(
[WebService]
# URL for Web API
)") DECLARE_KEY(web_api_url) BOOST_HANA_STRING(R"(
# Username and token for Citra Web Service
)") DECLARE_KEY(network_username) BOOST_HANA_STRING(R"(
# Token for Web Service
)") DECLARE_KEY(network_token) BOOST_HANA_STRING("\n")
).c_str();

View File

@ -8,7 +8,6 @@
#include <chrono>
#include <thread>
#include <network/network_settings.h>
#include "common/logging/log.h"
#include "core/core.h"
#include "core/hle/service/cfg/cfg.h"
@ -171,8 +170,8 @@ NetPlayStatus AndroidMultiplayer::NetPlayCreateRoom(const std::string& ipaddress
return NetPlayStatus::CREATE_ROOM_ERROR;
}
if (!room->Create(room_name, "", ipaddress, port, password, std::min(max_players, 16),
NetSettings::values.citra_username, preferedGameName, preferedGameId,
if (!room->Create(room_name, "", ipaddress, port, password, std::min(max_players, 16), username,
preferedGameName, preferedGameId,
std::make_unique<Network::VerifyUser::NullBackend>(), {})) {
return NetPlayStatus::CREATE_ROOM_ERROR;
}

View File

@ -105,7 +105,7 @@ std::condition_variable running_cv;
std::string inserted_cartridge;
// Abdroid Multiplayer which can be initialized with parameters
// Android Multiplayer which can be initialized with parameters
std::unique_ptr<AndroidMultiplayer> multiplayer{nullptr};
std::shared_ptr<Network::AnnounceMultiplayerSession> announce_multiplayer_session;
@ -1020,7 +1020,8 @@ Java_org_citra_citra_1emu_NativeLibrary_initMultiplayer(JNIEnv* env, [[maybe_unu
return;
}
announce_multiplayer_session = std::make_shared<Network::AnnounceMultiplayerSession>();
announce_multiplayer_session = std::make_shared<Network::AnnounceMultiplayerSession>(
Service::CFG::GetUsername(Core::System::GetInstance()));
multiplayer = std::make_unique<AndroidMultiplayer>(Core::System::GetInstance(),
announce_multiplayer_session);

View File

@ -56,7 +56,12 @@
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" />
android:cursorVisible="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:inputType="text"
android:longClickable="true"
android:textIsSelectable="true" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout

View File

@ -43,6 +43,8 @@
<string name="web_api_url_description">Web API URL for public room functionality</string>
<string name="network_token">Network Token</string>
<string name="network_token_description">Token for public room functionality</string>
<string name="username_uses_system">This property is linked to the 3DS system username.</string>
<string name="username_invalid">Username is not valid. Must be 4 to 20 alphanumeric characters.</string>
<!-- GPU driver installation -->
<string name="select_gpu_driver">Select GPU driver</string>

View File

@ -1,4 +1,4 @@
// Copyright 2017 Citra Emulator Project
// Copyright Citra Emulator Project / Azahar Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.