mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-17 05:41:29 +02:00
Cake's mwebd Go daemon is only built for iOS and Android — no Linux/macOS/ Windows toolchain in their build scripts. ffigen consequently never runs on those platforms, leaving cw_mweb/lib/mweb_ffi.dart dangling on a non-existent generated_bindings.g.dart import. This stub provides type-compatible signatures so the Dart build compiles on every platform. At runtime, DynamicLibrary.open will fail on desktop (no libmweb.so/.dll/.dylib shipped) and MWeb features will no-op — standard non-MWEB Litecoin sends/receives still work fine through cw_bitcoin. For Android the real bindings are still produced via ffigen against the libmweb.h Go-generated header, overwriting this stub at build time. Force-added past the *.g.dart gitignore — this one's a hand-maintained desktop fallback, not a build artifact.
45 lines
1.4 KiB
Dart
45 lines
1.4 KiB
Dart
// Hash Wallet: stub for the FFI bindings normally generated by ffigen from
|
|
// cw_mweb/android/src/main/jniLibs/arm64-v8a/libmweb.h.
|
|
//
|
|
// Upstream Cake only ships MWeb on iOS + Android — no Linux/macOS/Windows
|
|
// build of the Go-based mwebd daemon exists. Without this stub the Dart
|
|
// build fails on those platforms because cw_mweb/lib/mweb_ffi.dart imports
|
|
// MWebFlutter from this file at compile time.
|
|
//
|
|
// At runtime, attempting to use MWeb features will throw because
|
|
// DynamicLibrary.open(libPath) won't find a libmweb.so on desktop. That's
|
|
// fine — Litecoin's MWEB extension is a niche feature most users won't hit,
|
|
// and standard LTC sends/receives still work without it.
|
|
//
|
|
// To get real bindings (e.g. for an Android build): run ffigen against the
|
|
// libmweb.h header generated by `go build -buildmode=c-shared` in cw_mweb/go.
|
|
// See scripts/android/build_mwebd.sh for the canonical Android build.
|
|
|
|
import 'dart:ffi';
|
|
|
|
import 'package:ffi/ffi.dart';
|
|
|
|
class MWebFlutter {
|
|
MWebFlutter(DynamicLibrary _);
|
|
|
|
int StartServer(
|
|
Pointer<Char> chain,
|
|
Pointer<Char> dataDir,
|
|
Pointer<Char> nodeUri,
|
|
Pointer<Pointer<Char>> errMsg,
|
|
) =>
|
|
0;
|
|
|
|
void StopServer() {}
|
|
|
|
Pointer<Char> Addresses(
|
|
Pointer<Uint8> scanSecret,
|
|
int scanSecretLen,
|
|
Pointer<Uint8> spendPub,
|
|
int spendPubLen,
|
|
int fromIndex,
|
|
int toIndex,
|
|
) =>
|
|
''.toNativeUtf8().cast<Char>();
|
|
}
|