mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2024-12-22 11:39:22 +00:00
unstoppable domains fix (#1600)
This commit is contained in:
parent
0491ad9ee2
commit
2949299821
7 changed files with 16 additions and 123 deletions
|
@ -91,5 +91,4 @@ dependencies {
|
||||||
testImplementation 'junit:junit:4.12'
|
testImplementation 'junit:junit:4.12'
|
||||||
androidTestImplementation 'androidx.test:runner:1.3.0'
|
androidTestImplementation 'androidx.test:runner:1.3.0'
|
||||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
|
||||||
implementation 'com.unstoppabledomains:resolution:5.0.0'
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,14 +20,10 @@ import android.net.Uri;
|
||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
|
||||||
import com.unstoppabledomains.resolution.DomainResolution;
|
|
||||||
import com.unstoppabledomains.resolution.Resolution;
|
|
||||||
|
|
||||||
import java.security.SecureRandom;
|
import java.security.SecureRandom;
|
||||||
|
|
||||||
public class MainActivity extends FlutterFragmentActivity {
|
public class MainActivity extends FlutterFragmentActivity {
|
||||||
final String UTILS_CHANNEL = "com.cake_wallet/native_utils";
|
final String UTILS_CHANNEL = "com.cake_wallet/native_utils";
|
||||||
final int UNSTOPPABLE_DOMAIN_MIN_VERSION_SDK = 24;
|
|
||||||
boolean isAppSecure = false;
|
boolean isAppSecure = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -53,14 +49,6 @@ public class MainActivity extends FlutterFragmentActivity {
|
||||||
random.nextBytes(bytes);
|
random.nextBytes(bytes);
|
||||||
handler.post(() -> result.success(bytes));
|
handler.post(() -> result.success(bytes));
|
||||||
break;
|
break;
|
||||||
case "getUnstoppableDomainAddress":
|
|
||||||
int version = Build.VERSION.SDK_INT;
|
|
||||||
if (version >= UNSTOPPABLE_DOMAIN_MIN_VERSION_SDK) {
|
|
||||||
getUnstoppableDomainAddress(call, result);
|
|
||||||
} else {
|
|
||||||
handler.post(() -> result.success(""));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "setIsAppSecure":
|
case "setIsAppSecure":
|
||||||
isAppSecure = call.argument("isAppSecure");
|
isAppSecure = call.argument("isAppSecure");
|
||||||
if (isAppSecure) {
|
if (isAppSecure) {
|
||||||
|
@ -85,23 +73,6 @@ public class MainActivity extends FlutterFragmentActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getUnstoppableDomainAddress(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
|
|
||||||
DomainResolution resolution = new Resolution();
|
|
||||||
Handler handler = new Handler(Looper.getMainLooper());
|
|
||||||
String domain = call.argument("domain");
|
|
||||||
String ticker = call.argument("ticker");
|
|
||||||
|
|
||||||
AsyncTask.execute(() -> {
|
|
||||||
try {
|
|
||||||
String address = resolution.getAddress(domain, ticker);
|
|
||||||
handler.post(() -> result.success(address));
|
|
||||||
} catch (Exception e) {
|
|
||||||
System.out.println("Expected Address, but got " + e.getMessage());
|
|
||||||
handler.post(() -> result.success(""));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void disableBatteryOptimization() {
|
private void disableBatteryOptimization() {
|
||||||
String packageName = getPackageName();
|
String packageName = getPackageName();
|
||||||
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
|
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
|
||||||
|
|
|
@ -19,14 +19,10 @@ import android.net.Uri;
|
||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
|
||||||
import com.unstoppabledomains.resolution.DomainResolution;
|
|
||||||
import com.unstoppabledomains.resolution.Resolution;
|
|
||||||
|
|
||||||
import java.security.SecureRandom;
|
import java.security.SecureRandom;
|
||||||
|
|
||||||
public class MainActivity extends FlutterFragmentActivity {
|
public class MainActivity extends FlutterFragmentActivity {
|
||||||
final String UTILS_CHANNEL = "com.cake_wallet/native_utils";
|
final String UTILS_CHANNEL = "com.cake_wallet/native_utils";
|
||||||
final int UNSTOPPABLE_DOMAIN_MIN_VERSION_SDK = 24;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
|
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
|
||||||
|
@ -51,14 +47,6 @@ public class MainActivity extends FlutterFragmentActivity {
|
||||||
random.nextBytes(bytes);
|
random.nextBytes(bytes);
|
||||||
handler.post(() -> result.success(bytes));
|
handler.post(() -> result.success(bytes));
|
||||||
break;
|
break;
|
||||||
case "getUnstoppableDomainAddress":
|
|
||||||
int version = Build.VERSION.SDK_INT;
|
|
||||||
if (version >= UNSTOPPABLE_DOMAIN_MIN_VERSION_SDK) {
|
|
||||||
getUnstoppableDomainAddress(call, result);
|
|
||||||
} else {
|
|
||||||
handler.post(() -> result.success(""));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "disableBatteryOptimization":
|
case "disableBatteryOptimization":
|
||||||
disableBatteryOptimization();
|
disableBatteryOptimization();
|
||||||
handler.post(() -> result.success(null));
|
handler.post(() -> result.success(null));
|
||||||
|
@ -75,23 +63,6 @@ public class MainActivity extends FlutterFragmentActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getUnstoppableDomainAddress(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
|
|
||||||
DomainResolution resolution = new Resolution();
|
|
||||||
Handler handler = new Handler(Looper.getMainLooper());
|
|
||||||
String domain = call.argument("domain");
|
|
||||||
String ticker = call.argument("ticker");
|
|
||||||
|
|
||||||
AsyncTask.execute(() -> {
|
|
||||||
try {
|
|
||||||
String address = resolution.getAddress(domain, ticker);
|
|
||||||
handler.post(() -> result.success(address));
|
|
||||||
} catch (Exception e) {
|
|
||||||
System.out.println("Expected Address, but got " + e.getMessage());
|
|
||||||
handler.post(() -> result.success(""));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void disableBatteryOptimization() {
|
private void disableBatteryOptimization() {
|
||||||
String packageName = getPackageName();
|
String packageName = getPackageName();
|
||||||
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
|
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
|
||||||
|
|
|
@ -19,14 +19,10 @@ import android.net.Uri;
|
||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
|
||||||
import com.unstoppabledomains.resolution.DomainResolution;
|
|
||||||
import com.unstoppabledomains.resolution.Resolution;
|
|
||||||
|
|
||||||
import java.security.SecureRandom;
|
import java.security.SecureRandom;
|
||||||
|
|
||||||
public class MainActivity extends FlutterFragmentActivity {
|
public class MainActivity extends FlutterFragmentActivity {
|
||||||
final String UTILS_CHANNEL = "com.cake_wallet/native_utils";
|
final String UTILS_CHANNEL = "com.cake_wallet/native_utils";
|
||||||
final int UNSTOPPABLE_DOMAIN_MIN_VERSION_SDK = 24;
|
|
||||||
boolean isAppSecure = false;
|
boolean isAppSecure = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -52,14 +48,6 @@ public class MainActivity extends FlutterFragmentActivity {
|
||||||
random.nextBytes(bytes);
|
random.nextBytes(bytes);
|
||||||
handler.post(() -> result.success(bytes));
|
handler.post(() -> result.success(bytes));
|
||||||
break;
|
break;
|
||||||
case "getUnstoppableDomainAddress":
|
|
||||||
int version = Build.VERSION.SDK_INT;
|
|
||||||
if (version >= UNSTOPPABLE_DOMAIN_MIN_VERSION_SDK) {
|
|
||||||
getUnstoppableDomainAddress(call, result);
|
|
||||||
} else {
|
|
||||||
handler.post(() -> result.success(""));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "setIsAppSecure":
|
case "setIsAppSecure":
|
||||||
isAppSecure = call.argument("isAppSecure");
|
isAppSecure = call.argument("isAppSecure");
|
||||||
if (isAppSecure) {
|
if (isAppSecure) {
|
||||||
|
@ -84,23 +72,6 @@ public class MainActivity extends FlutterFragmentActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getUnstoppableDomainAddress(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
|
|
||||||
DomainResolution resolution = new Resolution();
|
|
||||||
Handler handler = new Handler(Looper.getMainLooper());
|
|
||||||
String domain = call.argument("domain");
|
|
||||||
String ticker = call.argument("ticker");
|
|
||||||
|
|
||||||
AsyncTask.execute(() -> {
|
|
||||||
try {
|
|
||||||
String address = resolution.getAddress(domain, ticker);
|
|
||||||
handler.post(() -> result.success(address));
|
|
||||||
} catch (Exception e) {
|
|
||||||
System.out.println("Expected Address, but got " + e.getMessage());
|
|
||||||
handler.post(() -> result.success(""));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void disableBatteryOptimization() {
|
private void disableBatteryOptimization() {
|
||||||
String packageName = getPackageName();
|
String packageName = getPackageName();
|
||||||
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
|
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
|
||||||
|
|
|
@ -36,7 +36,6 @@ target 'Runner' do
|
||||||
|
|
||||||
# Cake Wallet (Legacy)
|
# Cake Wallet (Legacy)
|
||||||
pod 'CryptoSwift'
|
pod 'CryptoSwift'
|
||||||
pod 'UnstoppableDomainsResolution', '~> 4.0.0'
|
|
||||||
end
|
end
|
||||||
|
|
||||||
post_install do |installer|
|
post_install do |installer|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import UIKit
|
import UIKit
|
||||||
import Flutter
|
import Flutter
|
||||||
import UnstoppableDomainsResolution
|
|
||||||
import workmanager
|
import workmanager
|
||||||
|
|
||||||
@UIApplicationMain
|
@UIApplicationMain
|
||||||
|
@ -87,27 +86,7 @@ import workmanager
|
||||||
}
|
}
|
||||||
|
|
||||||
result(secRandom(count: count))
|
result(secRandom(count: count))
|
||||||
case "getUnstoppableDomainAddress":
|
|
||||||
guard let args = call.arguments as? Dictionary<String, String>,
|
|
||||||
let domain = args["domain"],
|
|
||||||
let ticker = args["ticker"],
|
|
||||||
let resolution = self?.resolution else {
|
|
||||||
result(nil)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
resolution.addr(domain: domain, ticker: ticker) { addrResult in
|
|
||||||
var address : String = ""
|
|
||||||
|
|
||||||
switch addrResult {
|
|
||||||
case .success(let returnValue):
|
|
||||||
address = returnValue
|
|
||||||
case .failure(let error):
|
|
||||||
print("Expected Address, but got \(error)")
|
|
||||||
}
|
|
||||||
|
|
||||||
result(address)
|
|
||||||
}
|
|
||||||
case "setIsAppSecure":
|
case "setIsAppSecure":
|
||||||
guard let args = call.arguments as? Dictionary<String, Bool>,
|
guard let args = call.arguments as? Dictionary<String, Bool>,
|
||||||
let isAppSecure = args["isAppSecure"] else {
|
let isAppSecure = args["isAppSecure"] else {
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
import 'package:cake_wallet/utils/device_info.dart';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
import 'package:http/http.dart' as http;
|
||||||
|
|
||||||
const channel = MethodChannel('com.cake_wallet/native_utils');
|
const channel = MethodChannel('com.cake_wallet/native_utils');
|
||||||
|
|
||||||
|
@ -7,18 +9,19 @@ Future<String> fetchUnstoppableDomainAddress(String domain, String ticker) async
|
||||||
var address = '';
|
var address = '';
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (DeviceInfo.instance.isMobile) {
|
final uri = Uri.parse("https://api.unstoppabledomains.com/profile/public/${Uri.encodeQueryComponent(domain)}?fields=records");
|
||||||
address = await channel.invokeMethod<String>(
|
final jsonString = await http.read(uri);
|
||||||
'getUnstoppableDomainAddress',
|
final jsonParsed = json.decode(jsonString) as Map<String, dynamic>;
|
||||||
<String, String> {
|
if (jsonParsed["records"] == null) {
|
||||||
'domain' : domain,
|
throw Exception(".records response from $uri is empty");
|
||||||
'ticker' : ticker
|
};
|
||||||
}
|
final records = jsonParsed["records"] as Map<String, dynamic>;
|
||||||
) ?? '';
|
final key = "crypto.${ticker.toUpperCase()}.address";
|
||||||
} else {
|
if (records[key] == null) {
|
||||||
// TODO: Integrate with Unstoppable domains resolution API
|
throw Exception(".records.${key} response from $uri is empty");
|
||||||
return address;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return records[key] as String? ?? '';
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
print('Unstoppable domain error: ${e.toString()}');
|
print('Unstoppable domain error: ${e.toString()}');
|
||||||
address = '';
|
address = '';
|
||||||
|
|
Loading…
Reference in a new issue