瀏覽代碼

Minor fixes

世界 4 年之前
父節點
當前提交
ed38c9d8af

+ 1 - 0
app/src/main/java/io/nekohasekai/sagernet/SagerNet.kt

@@ -78,6 +78,7 @@ class SagerNet : Application(),
 
         val internalAssets = filesDir
         val externalAssets = getExternalFilesDir(null) ?: internalAssets
+        externalAssets.mkdirs()
         Libcore.initializeV2Ray(
             internalAssets.absolutePath + "/", externalAssets.absolutePath + "/", "v2ray/"
         ) {

+ 1 - 1
app/src/main/java/io/nekohasekai/sagernet/fmt/ConfigBuilder.kt

@@ -440,7 +440,6 @@ fun buildV2RayConfig(
                                         .apply {
                                             address = bean.serverAddress
                                             port = bean.serverPort
-                                            version = bean.protocolName()
                                             if (!bean.username.isNullOrBlank()) {
                                                 users = listOf(SocksOutboundConfigurationObject.ServerObject.UserObject()
                                                     .apply {
@@ -449,6 +448,7 @@ fun buildV2RayConfig(
                                                     })
                                             }
                                         })
+                                    version = bean.protocolVersionName()
                                 })
                             if (bean.tls || needKeepAliveInterval) {
                                 streamSettings = StreamSettingsObject().apply {

+ 11 - 0
app/src/main/java/io/nekohasekai/sagernet/fmt/socks/SOCKSBean.java

@@ -54,6 +54,17 @@ public class SOCKSBean extends AbstractBean {
         }
     }
 
+    public String protocolVersionName() {
+        switch (protocol) {
+            case 0:
+                return "4";
+            case 1:
+                return "4a";
+            default:
+                return "5";
+        }
+    }
+
     public String username;
     public String password;
     public boolean tls;

+ 1 - 1
app/src/main/java/io/nekohasekai/sagernet/fmt/v2ray/V2RayConfig.java

@@ -520,13 +520,13 @@ public class V2RayConfig {
     public static class SocksOutboundConfigurationObject implements OutboundConfigurationObject {
 
         public List<ServerObject> servers;
+        public String version;
 
         public static class ServerObject {
 
             public String address;
             public Integer port;
             public List<UserObject> users;
-            public String version;
 
             public static class UserObject {
 

+ 20 - 12
app/src/main/java/io/nekohasekai/sagernet/ui/ConfigurationFragment.kt

@@ -91,6 +91,16 @@ class ConfigurationFragment @JvmOverloads constructor(
     val alwaysShowAddress by lazy { DataStore.alwaysShowAddress }
     val securityAdvisory by lazy { DataStore.securityAdvisory }
 
+    val updateSelectedCallback = object : ViewPager2.OnPageChangeCallback() {
+        override fun onPageScrolled(
+            position: Int, positionOffset: Float, positionOffsetPixels: Int
+        ) {
+            if (adapter.groupList.size > position) {
+                DataStore.selectedGroup = adapter.groupList[position].id
+            }
+        }
+    }
+
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
         if (!select) {
@@ -113,18 +123,6 @@ class ConfigurationFragment @JvmOverloads constructor(
         groupPager.adapter = adapter
         groupPager.offscreenPageLimit = 2
 
-        if (!select) {
-            groupPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
-                override fun onPageScrolled(
-                    position: Int, positionOffset: Float, positionOffsetPixels: Int
-                ) {
-                    if (adapter.groupList.size > position) {
-                        DataStore.selectedGroup = adapter.groupList[position].id
-                    }
-                }
-            })
-        }
-
         TabLayoutMediator(tabLayout, groupPager) { tab, position ->
             if (adapter.groupList.size > position) {
                 tab.text = adapter.groupList[position].displayName()
@@ -787,6 +785,10 @@ class ConfigurationFragment @JvmOverloads constructor(
 
         fun reload() {
 
+            if (!select) {
+                groupPager.unregisterOnPageChangeCallback(updateSelectedCallback)
+            }
+
             runOnDefaultDispatcher {
                 groupList = ArrayList(SagerDatabase.groupDao.allGroups())
                 if (groupList.isEmpty()) {
@@ -810,6 +812,12 @@ class ConfigurationFragment @JvmOverloads constructor(
                     }
                 }
 
+                groupPager.post {
+                    if (!select) {
+                        groupPager.registerOnPageChangeCallback(updateSelectedCallback)
+                    }
+                }
+
                 onMainDispatcher {
                     notifyDataSetChanged()
                     val hideTab = groupList.size < 2

+ 1 - 1
external/v2ray-core

@@ -1 +1 @@
-Subproject commit b187f122937c3c7cfc15b399ccd73f890d77d1d3
+Subproject commit 0b982da0db63cfc3f3091a383529fa5ecdf28e7d

+ 1 - 1
library/core

@@ -1 +1 @@
-Subproject commit 599225cfbef8080698196966f38c09c96baaf6d7
+Subproject commit d6a16592d51d8ba5aebd3187305aec1c29c73b64