Skip to content

Instantly share code, notes, and snippets.

@Prashant830
Last active September 24, 2022 12:58
Show Gist options
  • Save Prashant830/176a7b1eada19a63ba02ed5b6e449593 to your computer and use it in GitHub Desktop.
Save Prashant830/176a7b1eada19a63ba02ed5b6e449593 to your computer and use it in GitHub Desktop.
GSoC'22 Report - Mobile Wallet

Google Summer of Code 2022

Project - Mobile Wallet

Mobile Wallet is an Android-based framework for digital wallet use cases based on top of the Apache Fineract 1.x platform. The project follows the clean architecture and contains a core library module which can be used as a dependency in any other wallet based project. The Mobile Wallet framework currently has MifosPay as a reference application to demonstrate these use cases.

Project Mentor:

Learning And Work Done

  • Started to learning the Retrofit ( GET, POST, PUT, PATCH ) RestApi Calling methods concepts with the demo Project.
  • Started to learning the okhttp, RxJava, Convert app in Model-View-Presenter Architecture (MVP) concepts with the demo Project.
  • Started to learning the Dependency Injection concept with the demo Project.
  • Closing the unnecessary Isses and unusefull features request.
  • Closing And Solving the conflict Pr's.
  • Total solving issues and rised the Pull Request's.
  • Other's Pull Request Reviews and suggested for merging.

1. Retrofit, RestApi Calling concepts with the demo Project [Project - link]

Description

It's basically API calling application, developed with the help of retrofit. In this application, I used to retrofit to get, update, and delete the data with the help of query, queryMap, Body, and Path from the API base URL. After getting, and fetching the data from the API source, I show it in a text view.

Screenshots

Demo Image 1 Demo Image 2 Demo Image 2

2. Okhttp, RxJava, Convert app in Model-View-Presenter Architecture (MVP) concepts with the demo Project [Project - link]

Description

In the second demo project, It's a real-time currencyConverter app with the help of currencConverter Api. In this App, I just applied the concepts of Okhttp, RxJava (observer, observable), and Model-View-Presenter Architecture (MVP). Due to the okhttp client, I just added three more Interceptors.
1- HttpLoggingInterceptor.
2- HandlerInterceptor.
3- ErrorHandlingInterceptor.
With the Rxjava we manage the API calling method into the background thread (Multithreading concept), and due to this our application runs very smoothly. And I also design the whole app in Model-View-Presenter Architecture (MVP). Due to this architecture, the changes in the network module did not affect the UI of the app, And also UI changes do not affect the network modules.

Screenshots And Recording

Demo Image 1 Demo Image 2 Demo Video

3. Dependency Injection concept with the demo Project [Project - link]

Description

Dependency Injection (often called just DI) is a software design pattern that helps us to create loosely coupled applications. due to being loosely coupled our code is much better than the hard coupled application. I just design DI without any framework like Dagger 2, Dagger Hilt, Koin, etc. we used DI in three ways:
1- method Injection.
2- field Injection.
3- constructor Injection.

Directed Acyclic Graph (DAG)

DAG for DI App

4. Closing the unnecessary Issues and unusefull features request with the help of my project mentor.

  • Issue No #1273 :
    We close the issue Able to proceed without entering OTP at mobile number verification because it is an unuseful feature request. If we need this feature in the future we finally open this. So at this time We close this issue.

  • Issue No #1152 :
    We close the issue because it's a unnecessary Isssue & The bank added feature is still not be done or added. so we cant add Bank added Successfully toast message. So That's a reason We close this issue.

  • Issue No #1061 :
    We close the issue Back Button is not visible for all Activities because it is an unuseful feature request. And it's already resolved. So That's a reason We close this issue.

  • Issue No #1072 :
    We close the issue docs : update screenshots as per the latest UI of the app because it is an unuseful feature request. And it's already resolved. So That's a reason We close this issue.

  • Issue No #824 :
    We close the issue Fix: Change Constants to strings of the app because there's another issue pointing out the same problem. So That's a reason We close this issue.

  • Issue No #761 :
    We close the issue Back Button not visible in View Receipt because it is an unuseful feature request. And it's already resolved. So That's a reason We close this issue.

  • Issue No #756 :
    We close the issue TextInputLayout in set amount dialog box because it is an unuseful feature request. And it's already resolved. So That's a reason We close this issue.

  • Issue No #712 :
    We close the issue fix: no scroll bar is transaction history because it is an unuseful feature request. And it's already resolved. So That's a reason We close this issue.

  • Issue No #643 :
    We close the issue Bug: Edit Profile dialog crashes when its dismissed because it is an unuseful feature request. And it's already resolved. So That's a reason We close this issue.

  • Issue No #570 :
    We close the issue & Feature Request: Hosting app on appetize because it is an unuseful feature request. If we need this feature in the future we finally open this. So at this time We close this issue.

  • Issue No #500 :
    We close the issue Search icon is not disappearing when typing anything in search box. because it is an unuseful feature request. If we need this feature in the future we finally open this. So at this time We close this issue.

  • Issue No #490 :
    We close the issue Empty view is missing in Link Your Bank Account because there's another issue pointing out the same problem. So That's a reason We close this issue.

5. Fixed Issues related to Solving the conflict Pr's.

  • Pull Request No #1346 :
    I Fixed Issue No #1131 Adding extra-text to be send with QR code. Because In this issue already have a conflict Pr. So That's a reason I generate This Pr for solving the Conflict Problem.

  • Pull Request No #1348 :
    I Fixed Issue No #1123 add attr in layout files to resolve xml errors. Because In this issue already have a conflict Pr. So That's a reason I generate This Pr for solving the Conflict Problem.

  • Pull Request No #1349 :
    I Fixed Issue No #1093 UI enhancement in activity_read_qr.xml. Because In this issue already have a conflict Pr. So That's a reason I generate This Pr for solving the Conflict Problem.

  • Pull Request No #1347 :
    I Fixed Issue No #1074 App crashes while switching between SIFragment. Because In this issue already have a conflict Pr. So That's a reason I generate This Pr for solving the Conflict Problem.

6. Total solving issues and rised the Pull Request's.

  • Pull Request No #1337 :
    Fixed Issue No #1238 Add Msg with receipt link. In this Pr just add private String shareMessage; at the place of tvReceiptLink.getText().toString().
Preview

  • Pull Request No #1341 :
    Fixed Issue No #1290 verification button partly visible. just added android:weightSum="7" in horizontal LinearLayout and added weight sum then divided it , In three parts -:
    1- Added android:layout_weight="2.9" at com.hbb20.CountryCodePicker.
    2- Added android:layout_weight="3.2" at android.support.design.widget.TextInputLayout.
    3- Added android:layout_weight=".9" at TextView.
Preview 1 Preview 2 Preview 3

  • Pull Request No #1340 :
    Fixed Issue No #1198 Does not show client details. In mainActivity, mainPresenter, BaseHomeContract interface I am going to remove the showclientdetails() function.
Preview

  • Pull Request No #1342 :
    Fixed Issue No #1250 Text View is getting overlaped. And Create A margin Top in a dynamically way in SignUpActivity.java class with the help of TableLayout.LayoutParams And setLayoutParams functionality and methods.

Preview One when keyboard is Removed :-

Preview 1 Preview 2 Preview 3

Preview Two when keyboard is Added :-

Preview 1 Preview 2 Preview 3

  • Pull Request No #1343 :
    Fixed Issue No #1158 Remove Profile pic btn from profile fragment. In this pr I created new xml layout file Profile_username.xml In this file I added only CircleImageView and one TextView (remove the Image View). And set this layout in the profile fragment at the place of profile_username_and_image with the Profile_username.xml layout.

  • Pull Request No #1350 :
    Fixed Issue No #473 Added missing inputType attribute to EditTexts. In this PR i just added the missing input attributes to the EditText on these layout files:

    1- mifospay/src/main/res/layout/activity_search.xml
    2- mifospay/src/main/res/layout/dialog_add_card.xml
    3- mifospay/src/main/res/layout/fragment_kyc_lvl1.xml
    4- mifospay/src/main/res/layout/fragment_kyc_lvl2.xml
    5- mifospay/src/main/res/layout/fragment_kyc_lvl3.xml


  • Pull Request No #1351 :
    Fixed Issue No #456 solved, Add a confirmation Dialog in Delete Bank. In this Pr I just added a confirmation Dialog for deleting the Bank Account in the BankAccountDetailActivity.java class. And I also added the Strings for showing in the dialog box it's open.
Preview

  • Pull Request No #1352 :
    Fixed Issue No #486 solved, Clear the text of search menu. In this pr i just Added a cross(x) button present in the search menu which clears the text in the search bar, In the LinkBankAccountActivity.java class.
Preview

  • Pull Request No #1353 :
    Fixed Issue No #537 Check internet connection while registering and logging. In this pr i added a Toast message (R.string.no_internet_connection) when user click the login and signup button on the condition of Not Have Internet Connection on LoginActivity.java and SignupActivity.java Class.
Preview 1 Preview 2

7. Other's Pull Request Reviews and suggested for merging to the mentor

During my GSoC journey, I also worked to review to the other's PR's :

  • Pull Request No #1330 fix: fixed view receipt review and suggest for merge.
  • Pull Request No #1092 Extra Country Checker Code creating bugs review and suggest for merge.
  • Pull Request No #1188 & Fixed Issue No #1187 Added Image cropper for images taken through camera in pro review and suggest for merge.
  • Pull Request No #1176 & Fixed Issue No #1175 Also review and suggest for merge.

Path Ahead

It was an amazing experience working with the Mifos Initiative on Mobile Wallet and I believe we achieved a lot during this GSoC journey.
But still, I think there are a lot of scopes for improvements and for adding new features.So Java to kotlin conversion, Notification Feature And 131 Issues are still opened and pending , we need to work on It.
I hope to continue working with the Mifos Initiative in the future and complete this task and help the other community members from my experience.

Conclusion

The Google Summer of Code journey with the Mifos Initiative has been pretty amazing and challenging both. I had a great time learning new things and working with other community members in a collaborative environment to develop and work on an amazing project. I would like to thank Ed Cable especially for always being ready to help me and my mentors for their guidance and support.

Thank You
Regards
Prashant Singh

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment