Strip remaining cakewallet.com endpoints + delete Monerocom assets

- Stub dashboard bulletin (was polling service-api.cakewallet.com); returns
  empty ServicesResponse until we stand up our own notice service.
- Repoint changelog 'View more info' link to hash.boats (modal trigger
  remains disabled; this is just for when we re-enable it).
- Replace exchange-helper.cakewallet.com with exchange-helper.such.software
  in moonpay/robinhood/onramper providers. Buy providers are still dormant
  (empty getAvailable*ProviderTypes); URL change is a fail-loudly placeholder
  to ensure we stand up our own proxy before re-enabling any of them.
- Delete Monerocom_Terms_of_Use.txt and Monerocom_Release_Notes.txt — these
  were Cake's Monero.com brand variant, never used by Hash Wallet. Collapse
  the isMoneroOnly branch in disclaimer_page.dart to always load
  Terms_of_Use.txt.
- Add docs/links.md (gitignored) inventorying all public-facing URLs and
  emails shipped in the binary.
This commit is contained in:
jwinterm
2026-05-16 19:55:53 -04:00
parent 9e5593011a
commit 9296e071f5
9 changed files with 17 additions and 232 deletions
+1 -1
View File
@@ -48,7 +48,7 @@ class MoonPayProvider extends BuyProvider {
static const _baseSellProductUrl = 'sell.moonpay.com';
static const _baseBuyTestUrl = 'buy-staging.moonpay.com';
static const _baseBuyProductUrl = 'buy.moonpay.com';
static const _cIdBaseUrl = 'exchange-helper.cakewallet.com';
static const _cIdBaseUrl = 'exchange-helper.such.software';
static const _apiUrl = 'https://api.moonpay.com';
static const _baseUrl = 'api.moonpay.com';
static const _currenciesPath = '/v3/currencies';
+1 -1
View File
@@ -28,7 +28,7 @@ class OnRamperBuyProvider extends BuyProvider {
static const _baseUrl = 'buy.onramper.com';
static const _baseApiUrl = 'api.onramper.com';
static const _cIdBaseUrl = 'exchange-helper.cakewallet.com';
static const _cIdBaseUrl = 'exchange-helper.such.software';
static const quotes = '/quotes';
static const paymentTypes = '/payment-types';
static const supported = '/supported';
@@ -37,7 +37,7 @@ class RobinhoodBuyProvider extends BuyProvider {
);
static const _baseUrl = 'applink.robinhood.com';
static const _cIdBaseUrl = 'exchange-helper.cakewallet.com';
static const _cIdBaseUrl = 'exchange-helper.such.software';
static const _apiBaseUrl = 'api.robinhood.com';
static const _assetsPath = '/catpay/v1/supported_currencies/';
+1 -1
View File
@@ -107,7 +107,7 @@ class _ChangelogModalState extends State<ChangelogModal> {
NewPrimaryButton(
onPressed: () {
try {
launchUrl(Uri.https("blog.cakewallet.com"));
launchUrl(Uri.https("hash.boats"));
} catch (_) {}
},
text: S.of(context).view_more_info,
@@ -4,7 +4,6 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:hash_wallet/src/screens/base_page.dart';
import 'package:hash_wallet/src/widgets/primary_button.dart';
import 'package:hash_wallet/wallet_type_utils.dart';
import 'package:modal_bottom_sheet/modal_bottom_sheet.dart';
class DisclaimerPage extends BasePage {
@@ -36,8 +35,7 @@ class DisclaimerBodyState extends State<DisclaimerPageBody> {
String _fileText = '';
void getFileLines() {
final fileName =
isMoneroOnly ? 'assets/text/Monerocom_Terms_of_Use.txt' : 'assets/text/Terms_of_Use.txt';
const fileName = 'assets/text/Terms_of_Use.txt';
rootBundle.loadString(fileName).then((text) => setState(() => _fileText = text));
}
@@ -1466,42 +1466,15 @@ abstract class DashboardViewModelBase with Store {
}
Future<ServicesResponse> _getServicesStatus() async {
try {
if (isEnabledBulletinAction) {
final res = await ProxyWrapper().get(
clearnetUri: Uri.https(
"service-api.cakewallet.com",
"/v1/active-notices",
{'key': secrets.fiatApiKey},
),
onionUri: Uri.http(
"jpirgl4lrwzjgdqj2nsv3g7twhp2efzty5d3cnypktyczzqfc5qcwwyd.onion",
"/v1/active-notices",
{'key': secrets.fiatApiKey},
),
);
if (res.statusCode < 200 || res.statusCode >= 300) {
throw res.body;
}
final oldSha = sharedPreferences.getString(PreferencesKey.serviceStatusShaKey);
final hash = await Cryptography.instance.sha256().hash(utf8.encode(res.body));
final currentSha = bytesToHex(hash.bytes);
final hasUpdates = oldSha != currentSha;
return ServicesResponse.fromJson(
json.decode(res.body) as Map<String, dynamic>,
hasUpdates,
currentSha,
);
} else {
return ServicesResponse([], false, '');
}
} catch (e) {
return ServicesResponse([], false, '');
}
// Hash Wallet: bulletin endpoint stubbed. The original implementation
// polled Cake's service-api.cakewallet.com/v1/active-notices (gated by
// the Cake-issued fiatApiKey) to surface push notices to all wallets.
// We don't run our own bulletin service yet. To restore: stand up an
// equivalent endpoint (likely under hash.boats or such.software) that
// returns the same JSON shape as service_status.dart expects, and put
// the network call back in place. Keep the user-facing toggle alive
// for forward-compat with the settings UI.
return ServicesResponse([], false, '');
}
String getTransactionType(TransactionInfo tx) {