-
Notifications
You must be signed in to change notification settings - Fork 49
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #5 from polkawallet-io/develop
v0.6.1-beta
- Loading branch information
Showing
174 changed files
with
7,754 additions
and
4,269 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
# 0.6.1 | ||
- fix nominator list bug | ||
- Refactor pending payouts query | ||
- Add polkascan links | ||
- Add back button in QRCode scan page | ||
|
||
# 0.6.0 | ||
- Show different UI for stash/controller account of staking | ||
- Refactor address form item in tx form | ||
- Cache user's assets data & staking data | ||
|
||
# 0.5.2 | ||
- Removed account index from transfer detail page | ||
- Add account export result pages | ||
- Change keystore json format to match with polkadot-js/apps | ||
- Adjust staking data fetching orders | ||
|
||
# 0.5.1 | ||
- Add staking rewards payout | ||
- Add staking unbond withdraw | ||
- Import account with raw seed bug fix | ||
- Update launch image | ||
|
||
# 0.5.0 | ||
- Refactored page routes | ||
- Fix redirect bug after transfer | ||
- Fix import account from keystore bug | ||
- Add points ranking of validators | ||
|
||
# 0.4.2 | ||
- Update polkadot-js/api to 1.6.0-beta.6 | ||
- Add polkawallet hosted Kusama node | ||
- Add ios building files | ||
- Add advanced account import options: derive path | ||
|
||
# 0.4.1 | ||
- Add encrypted mnemonic storage and export | ||
|
||
# 0.4.0 | ||
- Refactored polkadot_js_service API | ||
- Add SVG polkadot Icons as Avatar | ||
- change QRCode format | ||
|
||
# 0.3.0 | ||
- Refactored MobX store | ||
- Add android launch page | ||
|
||
# 0.2.0 | ||
- Add governance(council & referendums) actions | ||
|
||
# 0.1.0 | ||
- Staking actions UI changes | ||
|
||
# 0.0.1 | ||
- Accounts managing | ||
- Token transfer | ||
- Staking actions |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,99 @@ | ||
# polkawallet-flutter | ||
|
||
Polkawallet Flutter Implementation, https://polkawallet.io | ||
|
||
![](https://github.com/jiangfuyao/polkawallet-flutter-images/raw/master/cover-eb14f464e002642772ffad6d4c9debd5.png) | ||
|
||
### How to compile | ||
|
||
#### Install Flutter | ||
`polkawallet_flutter` is built with [Flutter](https://flutter.dev/), you need to have `Flutter` dev tools | ||
installed on your computer to compile the project. check [Flutter Documentation](https://flutter.dev/docs) | ||
to learn how to install `Flutter` and initialize a Flutter App. | ||
|
||
#### Build `main.js` of polkadot-js API | ||
`polkawallet_flutter` connects substrate-based networks with [polkadot-js/api](https://polkadot.js.org/api/), running in a hidden webview. | ||
You'll need `Nodejs` and `yarn` installed to build the bundled `main.js` file: | ||
```shell script | ||
cd lib/polkadot_js_service/ | ||
# install nodejs dependencies | ||
yarn install | ||
# build main.js | ||
yarn run build | ||
``` | ||
|
||
#### Build Flutter App | ||
While `main.js` was built in `lib/polkadot_js_service/` directory, you may build the App with Flutter's [Deployment Documentation](https://flutter.dev/docs). | ||
>Note that this project can be compiled both in Android and IOS, | ||
>But there is an Issue running it on an IOS simulator, that the | ||
>substrate `sr25519` keyPair is generated within an `WASM` virtual | ||
>machine which is **not supported** by IOS simulators. | ||
### Project introduce | ||
|
||
[Polkawallet](http://polkawallet.io) provide Cross-chain asset one-stop management, convenient staking and governance, the private key is self-owned. | ||
|
||
![](https://github.com/jiangfuyao/polkawallet-flutter-images/raw/master/Simulator%20Screen%20Shot%20-%20iPhone%2011%20Pro%20Max%20-%202020-03-09%20at%2018.05.11-iPhone%20X.png) | ||
|
||
In order to give users a more humane and more convenient experience, as the entrance of the polkadot network, the user is provided with more intuitive visual data and status change display to guarantee the user's right to know and network participation. | ||
|
||
|
||
- Users can add assets, support Relaychain and Parachain to transfer, receive, and view the transfer history and state. Have the visual asset change analysis chart, make it easier for users to analyze assets. Users are notified when they receive the asset and can view the transfer details data. | ||
|
||
The private key is self-owned, and have the Gesture,Fingerprint, Facial recognition, Hot and cold wallet mechanism, users can set their own scheme. Our team is developing a new encryption scheme -- high - dimensional fractal encryption, will be used to safeguard the security of a user using the polkawallet. | ||
|
||
![](https://github.com/jiangfuyao/polkawallet-flutter-images/raw/master/Simulator%20Screen%20Shot%20-%20iPhone%208%20Plus%20-%202020-03-17%20at%2010.57.14-iPhone%207.png) | ||
|
||
- Polkawallet makes it easier for validators and nominal ators to make their contributions, by making the charts more intuitive and having a detailed history of each validators, for better analysis and research. | ||
|
||
![](https://github.com/jiangfuyao/polkawallet-flutter-images/raw/master/Simulator%20Screen%20Shot%20-%20iPhone%2011%20Pro%20-%202020-03-19%20at%2015.11.09-iPhone%20X.png) | ||
![](https://github.com/jiangfuyao/polkawallet-flutter-images/raw/master/Simulator%20Screen%20Shot%20-%20iPhone%208%20Plus%20-%202020-03-17%20at%2010.57.48-iPhone%207.png) | ||
|
||
- Polkawallet provides a more intuitive and convenient entry point for participating in governance. If there is a new referendum/proposals, the user is reminded and you can view the details. Users can governance directly from polkawallet and view the history governance records. So polkawallet also improves public Referenda engagement. | ||
|
||
![](https://github.com/jiangfuyao/polkawallet-flutter-images/raw/master/Simulator%20Screen%20Shot%20-%20iPhone%2011%20Pro%20Max%20-%202020-03-09%20at%2018.06.47-iPhone%20X.png) | ||
|
||
![](https://github.com/jiangfuyao/polkawallet-flutter-images/raw/master/Simulator%20Screen%20Shot%20-%20iPhone%208%20Plus%20-%202020-03-17%20at%2010.58.27-Pixel.png) | ||
|
||
|
||
- Available for all major mobile platforms. Currently Flutter is used as a cross-platform solution. | ||
|
||
### Let's see what this version can do | ||
- [x] We redeveloped Polkawallet with Flutter, which greatly improved the fluency. | ||
- [x] You can create Kusama Network account and use Sr25519 by default. | ||
- [x] Import account support Mnemonics, Raw Seed, Keystore. | ||
- [x] Import account support Sr/Ed25519, also supports HD Derivation. | ||
- [x] Basic balance display and transfer functions, transaction history query, Qr code interaction. | ||
- [x] Staking module basic account status information, including: Bonded, Unlocking, Reward, and more. | ||
- [x] Staking Operation Records. | ||
- [x] Staking account operation functions, including: Bond,Unbond,Reward Type change,Reward,payout reward, and more. | ||
- [x] Governance module displays information about the Council and can perform voting. | ||
- [x] Governance module, Democracy can view the referendum information, and can cast your vote in addition to the lock-up period. | ||
- [x] Some basic account settings, such as changing name, password. And can choose network nodes, address prefix, Language. | ||
|
||
### Next Plan | ||
|
||
- Support for the Acala Network account module. | ||
- Integrated Acala Network Honzon operating platform. | ||
- Support for other Parachain accounts and functional modules. | ||
|
||
### Questions | ||
|
||
> Why use Flutter to develop? | ||
The previous version tried to develop Polkawallet with React Native, we want to try different frameworks and explore different solutions. Through exploration, we saw that the fluency of the Flutter version has greatly improved, which is a good attempt. | ||
|
||
> Can other teams make secondary development based on Polkawallet? | ||
Of course, we use a very loose Apache License 2.0, you can make free changes based on Polkawallet. We have contacted some projects to help them carry out secondary development. Such as datahighway.com | ||
There have the link of Github repository: https://github.com/polkawallet-io/polkawallet-flutter/tree/develop | ||
|
||
> How can Polkawallet maintain development? | ||
We got grants from Web3 Foundation, at the same time, we are helping Acala Network to develop convenient mobile interactions. In the future we want to actively join the ParaDAO that Acala Network is launching, this can be a way for many ecological projects to come together. Through ParaDAO, infrastructures such as Polkawallet and Parachain projects all have clear maintenance development plans. | ||
|
||
|
||
### View more info of Polkawallet | ||
`Website:` https://polkawallet.io | ||
`Twitter:` https://twitter.com/polkawallet | ||
`E-mail:` hello@polkawallet.io |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
*.mode1v3 | ||
*.mode2v3 | ||
*.moved-aside | ||
*.pbxuser | ||
*.perspectivev3 | ||
**/*sync/ | ||
.sconsign.dblite | ||
.tags* | ||
**/.vagrant/ | ||
**/DerivedData/ | ||
Icon? | ||
**/Pods/ | ||
**/.symlinks/ | ||
profile | ||
xcuserdata | ||
**/.generated/ | ||
Flutter/App.framework | ||
Flutter/Flutter.framework | ||
Flutter/Flutter.podspec | ||
Flutter/Generated.xcconfig | ||
Flutter/app.flx | ||
Flutter/app.zip | ||
Flutter/flutter_assets/ | ||
Flutter/flutter_export_environment.sh | ||
ServiceDefinitions.json | ||
Runner/GeneratedPluginRegistrant.* | ||
|
||
# Exceptions to above rules. | ||
!default.mode1v3 | ||
!default.mode2v3 | ||
!default.pbxuser | ||
!default.perspectivev3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
<plist version="1.0"> | ||
<dict> | ||
<key>CFBundleDevelopmentRegion</key> | ||
<string>$(DEVELOPMENT_LANGUAGE)</string> | ||
<key>CFBundleExecutable</key> | ||
<string>App</string> | ||
<key>CFBundleIdentifier</key> | ||
<string>io.flutter.flutter.app</string> | ||
<key>CFBundleInfoDictionaryVersion</key> | ||
<string>6.0</string> | ||
<key>CFBundleName</key> | ||
<string>App</string> | ||
<key>CFBundlePackageType</key> | ||
<string>FMWK</string> | ||
<key>CFBundleShortVersionString</key> | ||
<string>1.0</string> | ||
<key>CFBundleSignature</key> | ||
<string>????</string> | ||
<key>CFBundleVersion</key> | ||
<string>1.0</string> | ||
<key>MinimumOSVersion</key> | ||
<string>8.0</string> | ||
</dict> | ||
</plist> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" | ||
#include "Generated.xcconfig" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" | ||
#include "Generated.xcconfig" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
# Uncomment this line to define a global platform for your project | ||
# platform :ios, '9.0' | ||
|
||
# CocoaPods analytics sends network stats synchronously affecting flutter build latency. | ||
ENV['COCOAPODS_DISABLE_STATS'] = 'true' | ||
|
||
project 'Runner', { | ||
'Debug' => :debug, | ||
'Profile' => :release, | ||
'Release' => :release, | ||
} | ||
|
||
def parse_KV_file(file, separator='=') | ||
file_abs_path = File.expand_path(file) | ||
if !File.exists? file_abs_path | ||
return []; | ||
end | ||
generated_key_values = {} | ||
skip_line_start_symbols = ["#", "/"] | ||
File.foreach(file_abs_path) do |line| | ||
next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } | ||
plugin = line.split(pattern=separator) | ||
if plugin.length == 2 | ||
podname = plugin[0].strip() | ||
path = plugin[1].strip() | ||
podpath = File.expand_path("#{path}", file_abs_path) | ||
generated_key_values[podname] = podpath | ||
else | ||
puts "Invalid plugin specification: #{line}" | ||
end | ||
end | ||
generated_key_values | ||
end | ||
|
||
target 'Runner' do | ||
use_frameworks! | ||
use_modular_headers! | ||
|
||
# Flutter Pod | ||
|
||
copied_flutter_dir = File.join(__dir__, 'Flutter') | ||
copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework') | ||
copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec') | ||
unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path) | ||
# Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet. | ||
# That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration. | ||
# CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist. | ||
|
||
generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig') | ||
unless File.exist?(generated_xcode_build_settings_path) | ||
raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first" | ||
end | ||
generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path) | ||
cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR']; | ||
|
||
unless File.exist?(copied_framework_path) | ||
FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir) | ||
end | ||
unless File.exist?(copied_podspec_path) | ||
FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir) | ||
end | ||
end | ||
|
||
# Keep pod path relative so it can be checked into Podfile.lock. | ||
pod 'Flutter', :path => 'Flutter' | ||
|
||
# Plugin Pods | ||
|
||
# Prepare symlinks folder. We use symlinks to avoid having Podfile.lock | ||
# referring to absolute paths on developers' machines. | ||
system('rm -rf .symlinks') | ||
system('mkdir -p .symlinks/plugins') | ||
plugin_pods = parse_KV_file('../.flutter-plugins') | ||
plugin_pods.each do |name, path| | ||
symlink = File.join('.symlinks', 'plugins', name) | ||
File.symlink(path, symlink) | ||
pod name, :path => File.join(symlink, 'ios') | ||
end | ||
end | ||
|
||
# Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system. | ||
install! 'cocoapods', :disable_input_output_paths => true | ||
|
||
post_install do |installer| | ||
installer.pods_project.targets.each do |target| | ||
target.build_configurations.each do |config| | ||
config.build_settings['ENABLE_BITCODE'] = 'NO' | ||
|
||
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [ | ||
'$(inherited)', | ||
|
||
## dart: PermissionGroup.calendar | ||
'PERMISSION_EVENTS=0', | ||
## dart: PermissionGroup.reminders | ||
'PERMISSION_REMINDERS=0', | ||
## dart: PermissionGroup.contacts | ||
'PERMISSION_CONTACTS=0', | ||
## dart: PermissionGroup.camera | ||
# 'PERMISSION_CAMERA=0', | ||
## dart: PermissionGroup.microphone | ||
'PERMISSION_MICROPHONE=0', | ||
## dart: PermissionGroup.speech | ||
'PERMISSION_SPEECH_RECOGNIZER=0', | ||
## dart: PermissionGroup.photos | ||
# 'PERMISSION_PHOTOS=0', | ||
## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse] | ||
'PERMISSION_LOCATION=0', | ||
## dart: PermissionGroup.notification | ||
# 'PERMISSION_NOTIFICATIONS=0', | ||
## dart: PermissionGroup.mediaLibrary | ||
'PERMISSION_MEDIA_LIBRARY=0', | ||
## dart: PermissionGroup.sensors | ||
'PERMISSION_SENSORS=0' | ||
] | ||
end | ||
end | ||
end |
Oops, something went wrong.