GithubHelp home page GithubHelp logo

cosmostation / cosmostation-ios Goto Github PK

View Code? Open in Web Editor NEW
38.0 8.0 32.0 203.46 MB

πŸ‘½ Cosmostation iOS Wallet

License: MIT License

Swift 99.99% Ruby 0.01%
cosmos-sdk tendermint kava iris starname cosmostation ios

cosmostation-ios's Introduction

All Contributors

Cosmostation logo

Cosmostation Mobile Wallet

Welcome to Cosmostation's Open Source Mobile Apps!

MIT Twitter Follow

πŸš€ Developed / Developing by Cosmostation

About

Cosmostation wallet apps are non-custodial tendermint-based wallet that supports COSMOS HUB. We will add more tendermint-based blockchain projects in the coming updates, such as AKASH, ASSETMANTLE, AXELAR, BAND, BINANCE, BITCANNA, BITSONG, CANTO, CERBERUS, CHIHUAHUA, COMDEX, CRESCENT, CRYTO.ORG, CUDOS, DESMOS, EMONEY, EVMOS, FETCH.AI, GRAVITYBRIDGE, INJECTIVE, IRIS, IXO, JUNO, KAVA, KI, KONSTELLATION, KUJIRA, LIKECOIN, LUM, MARS, MEDIBLOC, NYX, OKC, OMNIFLIX, ONOMY, OSMOSIS, PASSAGE, PERSISTENCE, PROVENANCE, QUICKSILVER, REGEN, RIZON, SECRET, SENTINEL, SHENTU, SIF, SOMMELIER, STARGAZE, STARNAME, STRIDE, TERITORI, UMEE, XPLA

Notice iOS

You can build by following these instructions:

  1. Clone the project.
  2. pod update ( in m1. arch -x86_64 pod update)
  3. Remove GoogleService-Info.plist from list of project files.(Red highlighting)
  4. Comment out FirebaseApp.configure() in AppDelegate.swift

Downloads

Cosmostation's Services and Community

License

Copyright Β© Cosmostation, Inc. All rights reserved.

Licensed under the MIT.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

wannabit-yongjoo
wannabit-yongjoo

πŸ’» πŸ› 🚧
JayB
JayB

πŸ“– πŸ“†
HeartBreaker
HeartBreaker

πŸ’» πŸ› 🚧
Orkun Külçe
Orkun Külçe

πŸ’»
Ron Stoner
Ron Stoner

πŸ› πŸ“–
soaryong-c
soaryong-c

πŸ’» πŸ› 🚧
Kwonhyukjoon
Kwonhyukjoon

πŸ’» πŸ› 🚧
Alberto Penas Amor
Alberto Penas Amor

πŸ’» πŸ›
Diyair
Diyair

πŸ’» 🎨

This project follows the all-contributors specification. Contributions of any kind welcome!

cosmostation-ios's People

Contributors

albertopeam avatar allcontributors[bot] avatar heartbreaker avatar jaybxyz avatar kimheeje12 avatar kwonhyukjoon avatar orkunkl avatar ronaldstoner avatar soaryong-c avatar stamper-dev avatar terenceodonoghue avatar wannabit-yongjoo avatar xpt1x avatar xxxxpark avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cosmostation-ios's Issues

Ledger Support for Mobile

Please add Ledger support for mobile wallets. Right now this is only supported on the web wallet.

Automatically Adjust Font WARNING

Hi, I would like to remove this warning related to UILabel.

Apple doc says that is not supported the usage of auto adjust font to category when using custom fonts. Doc where points this point is greyed out in a box.
Captura de Pantalla 2022-12-04 a las 12 40 54

Options:

  1. Remove the automatically adjust fonts in every place of the project as it doesn't work
  2. Change to a non custom font(I am not considering doing this by myself as design will be changed)

I think the change with less impact is the first one, as right now it doesn't work so it doesn't matter if we enable or not the option that generates the warning

NavigationBar improvements

I would like to ask why to use those snippets in most of view controllers when navigating from A to B
A code:

self.navigationItem.title = ""
self.navigationController?.pushViewController(viewController, animated: true)

B code:

self.navigationController?.setNavigationBarHidden(false, animated: animated)
self.navigationController?.navigationBar.topItem?.title = NSLocalizedString("...", comment: "")
self.navigationItem.title = NSLocalizedString("...", comment: "")
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = UIImage()

why it is used this code? I think it should be easier to avoid this and use iOS default behaviour.
Plus: iOS behaviour feels better than now, you can see it in the next videos

Right now video:
https://user-images.githubusercontent.com/912381/214426207-870a43a6-bacb-454e-a0a0-516cfaffc858.mov

New proposal(slow motion):
https://user-images.githubusercontent.com/912381/214430260-82d1bc1a-03ae-4e0d-a1db-f90a595d3d3c.mov
New proposal(normal motion):
https://user-images.githubusercontent.com/912381/214430702-b2021a68-cd08-4cfb-9317-bd525e492b96.mov

Extra: the buttons on the right have extra spacing in native bar because icons have extra margin, this can be fixed easily removing the extra margin

With this approach we can remove at least 150 lines of code that is repeated and can be improved with native approach
@wannabit-yongjoo what do you think?

Threading strategy and connection creation

There are 204 similar examples of this block of code in the project:

DispatchQueue.global().async {
   do {
       let channel = BaseNetWork.getConnection(chainType!, MultiThreadedEventLoopGroup(numberOfThreads: 1))!
       // create request
       // create client
       // client make request + wait 
       DispatchQueue.main.async(execute: {
           // change UI
       });
       try channel.close().wait()
    } catch {
       print("Log error...")
    }
}

It would be great to componentize threading + connection creatinon code.
PROS:
Less code
Do things once
Less copy/paste
Faster development
CONS:
If you know the code no CON, if you don't know it you will have to read and understand it(in any case better than now: copy/paste)

I will start looking at it to try to provide a clean solution

Protobuff Documentation

Hello guys,
I am working on an iOS App that relies on the Protobuff code from the Cosmostation iOS repository. I would like to query all information about a CW20 token contract like symbol or name on Juno chain.
I've seen that you guys implemented a query to fetch the balance for a wallet and I was wondering if you could send me the documentation about how to query these endpoints. I searched for it already but without success.
I would highly appreciate it if you could support!

Screenshot 2022-12-04 at 22 24 04
Screenshot 2022-12-04 at 22 24 34

Incorrect starname validation check

This check is not good:

if (starname.starts(with: "*") && starname.count > 3) { return true }

Instead it should be: (writing in typescript, dont knw swift πŸ˜… )

    const names = starname.split("*");
    if (names.length !== 2) return false;
    if (names[0] === "") return isStarnameValidDomain(names[1]);
    return isStarnameValidAccount(names[0]) && isStarnameValidDomain(names[1]);

Also please update this domain regex:

let starNameRegEx = "^[mabcdefghijklnopqrstuvwxy][-a-z0-9_]{0,2}$|^[-a-z0-9_]{4,32}$"

Updated one is this: "^[mabcdefghijklnopqrstuvwxyz0123456789][-a-z0-9_]{0,2}$|^[-a-z0-9_]{4,32}$"
And can be found here: https://api.starname.cosmos.iov.one/starname/v1beta1/configuration/params

UI UX overhaul

Hey all, I think the UI UX of this ios app has a lot of room for improvement.

  • From large margins
  • wildly different color schemes for each wallet (make ONE GOOD one, not MANY bad ones)
  • having to whitelist a chain for your mnemonic
  • Send button looks bad (make it part of the panel
  • displaying 0s when unnecessary

IMG_91685D36D4BB-1

  • Token Icons are too visually busy (small screens makes it look overly complex with stripped circular borders)

IMG_840B47593A9F-1

We should try and make the UI UX closer to the web extension which actually has good UI UX:

ONE MNEUMONIC displays ALL of your assets not having to senselessly switch around
Screen Shot 2022-11-02 at 11 21 43

NewAccountTypePopup buttons doesn't reflect the tap action visually

Hi,

I have installed the app in the AppStore and I saw that the NewAccountTypePopup buttons doesn't show the highlight while tapping them.
I would like to fix them by my own, I have check the readme and I didn't find any doc about how to contribute. Could you explain where I can read something to getting started?

I would also ask if you can help me with the Xcode build as it is failing, reasons:

  1. When I build the CosmostationDev target it gets stuck indefinitely(During "copy InfoPlist.strings").
  2. It also throws an error related "GoogleService-Info.plist"(not found), could you explain if its needed some config related to firebase?

Relevant info:
I had an issue with Cocoapods while installing, I solved it with "gem install --user-install ffi -- --enable-libffi-alloc"
Finally I got all pods installed succesfully

Using:
M1 laptop. macOS 12.5.1 (21G83)
Xcode13.4.1
Cocoapods 1.11.3 / ruby 2.6.8p205 (2021-07-07 revision 67951)

I hope you can help me, I would like to contribute to this great project :)

Wrong wallet address created with Cosmostation App / tokens lost

Dear Team,
I'm trying to use an old Akash wallet created with Cosmostation App (iPhone) in 2021.
The old saved mnemonic (screenshot) and private key don't match with the wallet address in the app.

Also:

  • showing mnemonic
  • exporting the private key
  • checking the HD Key path (44/118/0 default)

from the current app and importing it in another Cosmostation App, a different address is created.
Note: both (mnemonic and private key) import the same address, but different from the original.

At last, trying to move tokens from the current wallet to another or staking... the application hang after the tx confirm, without any transaction on chain.

The current wallet has never executed tx, but only received tokens.

GoogleService-Info.plist is missing for collaborators

Hi!

I have been checking and is possible to bypass for collaborators the absence of GoogleService-Info.plist without having to delete it manually every time we work in the project, it is annoying.

The solution is to remove the GoogleService-Info.plist from the CosmostationDev target and conditionally start firebase ONLY if the target is production. I don't think is the best way to fix it but at least is one way.

Another cleaner solution is to create separate files to deal with that so is not possible to make an error, ie:
Cosmostation target will have a file where we will do FirebaseApp.configure()
CosmostationDev target will have a file where we won't start firebase
No logic solution, safer and cleaner but a bit more complex. Not really complex, only more code

what do you think?
I would go with second one, but I am open :)

@soaryong-c
@wannabit-yongjoo

AuthzListViewController remove static accesses to data from the view controller

ViewDidLoad() makes some access to data

override func viewDidLoad() {
        super.viewDidLoad()
        self.account = BaseData.instance.selectAccountById(id: BaseData.instance.getRecentAccountId())
        self.chainType = ChainFactory.getChainType(account!.account_base_chain)
        self.chainConfig = ChainFactory.getChainConfig(chainType)
}

it would be nice to move to the reducer/inject in the state and save lines in the ViewController, this way the ViewController won't have logic that access directly to BaseData

Add ability to add custom chains

Having a default set of chains is great, but you ultimately you don't want to have to release a new version to support new chains, additionally, testnets in this model will seldomly be supported, but testnets are vital for testing mobile behavior as a developer

Secret-4 chain

How to add secret-4 chain to secret wallet? Latest version is secret-3 chain which is deadβ€”can not operate Wallet features without errors.

This chain is dead and some features may not work. Want to see the latest chain?

Remove prints

HI!

I would like to propose the removal of all the prints in the project. Does it fit for you?

I understand that they can help in local environment but they don't add any value in production. So it would be nice to avoid adding new ones.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.