Giter Club home page Giter Club logo

gakki's Introduction

Gakki

This is a third-part client of Mastodon written by React Native(only Android is considered recently).

中文

Download APK Directly

Get it on F-Droid

Page Preview


gakki gakki gakki
gakki gakki gakki
gakki gakki gakki
gakki gakki

a series of development tutorials are being prepared.

Features


  • Immersive design
  • Most Mastodon functions implemented
  • Multi-Account support
  • Night, Day mode
  • Custom emoticon support (belong to cmx.im)
  • Open-source completely
  • No permission required(allow permission yourself if take pictures)

Getting Started:


First of all, You need to having required environment of React Native .(just Android) Official Documentation.

Download Project:

git clone https://github.com/shuiRong/Gakki
cd ./Gakki
yarn // or npm i

Create Local Config file

create file in src/utils/config.js, it contains:

export const token = 'Bearer xxxxxxxx'  // required. (Watch out: there is a blank space.)
export const version = '1.0' // required. app version used in About.js

How to get my token?

  1. You need a mastodon account and then open your setting page. For example: https://cmx.im/settings/applications.
  2. Create a new application in Development-->Yout applications.
  3. set Redirect URI to https://linshuirong.cn this version temporarily (will be optimized in the next version).
  4. select all Scopes.
  5. click Submit button

Click the Application you just created. You can see Your access token, that's it.

Signing APK:

First of all, type this: keytool -genkeypair -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

and then:

  1. Place the my-release-key.keystore file under the android/app directory in your project folder.
  2. Edit the file ~/.gradle/gradle.properties or android/gradle.properties, and add the following (replace ***** with the correct keystore password, alias and key password),
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****

Connect Phone: connect your phone to the computer using USB. see Offcial Documentation and Google your question.

Run Project:

react-native run-android

P.S. Submit an issue if you have a problem with Gakki.

Todo List


Github Projects

gakki's People

Contributors

dependabot[bot] avatar shuirong 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  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  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  avatar  avatar

gakki's Issues

登录不上

作者你好,在登录界面输入域名后,点击登录就没反应了,返回的话会一直卡在loading界面。

Please increase versionCode with each release

All your releases seem to keep their versionCode at 1. As that's the value Android tells different versions of an app apart from each other, it should be increased with each release – otherwise Android complains that version is already installed. So could you please remember increasing that whenever you make a new release? Thanks in advance!

While on it: is there an English description for the app somewhere – for folks outside China?

(BUG) After clicking on the mastodon, the application crashes when I click on the back icon

Project Information

Expected behavior

After opening the mastodon option, when I click on the back button, the application should not be crashed, but the app should be backed up.

Actual behavior

After clicking on the mastodon, the application crashes when I click on the back icon

How to reproduce

  • open the application

  • click on Mastodon

  • After clicking on the mastodon click on the back icon

  • Note the Error

  • Browser/App version: 1.1.6

  • Operating system: 6.0

Recording Of The Bug

20190609_165032

Logcat

E/AndroidRuntime(22280): FATAL EXCEPTION: mqt_native_modules

E/AndroidRuntime(22280): Process: com.gakki, PID: 22280

E/AndroidRuntime(22280): com.facebook.react.common.JavascriptException: TypeError: TypeError: TypeError: this.cancelGetToken is not a function. (In 'this.cancelGetToken()', 'this.cancelGetToken' is null)

E/AndroidRuntime(22280): 

E/AndroidRuntime(22280): This error is located at:

E/AndroidRuntime(22280):     in n

E/AndroidRuntime(22280):     in s

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in u

E/AndroidRuntime(22280):     in C

E/AndroidRuntime(22280):     in n

E/AndroidRuntime(22280):     in E

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in n

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in H

E/AndroidRuntime(22280):     in L

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in h

E/AndroidRuntime(22280):     in v

E/AndroidRuntime(22280):     in h

E/AndroidRuntime(22280):     in _

E/AndroidRuntime(22280):     in N

E/AndroidRuntime(22280):     in s

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in u

E/AndroidRuntime(22280):     in C

E/AndroidRuntime(22280):     in n

E/AndroidRuntime(22280):     in E

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in n

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in H

E/AndroidRuntime(22280):     in L

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in h

E/AndroidRuntime(22280):     in v

E/AndroidRuntime(22280):     in h

E/AndroidRuntime(22280):     in _

E/AndroidRuntime(22280):     in N

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in n

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in u

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in n

E/AndroidRuntime(22280):     in v

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in c

E/AndroidRuntime(22280): 

E/AndroidRuntime(22280): This error is located at:

E/AndroidRuntime(22280):     in N

E/AndroidRuntime(22280):     in s

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in u

E/AndroidRuntime(22280):     in C

E/AndroidRuntime(22280):     in n

E/AndroidRuntime(22280):     in E

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in n

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in H

E/AndroidRuntime(22280):     in L

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in h

E/AndroidRuntime(22280):     in v

E/AndroidRuntime(22280):     in h

E/AndroidRuntime(22280):     in _

E/AndroidRuntime(22280):     in N

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in n

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in u

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in n

E/AndroidRuntime(22280):     in v

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in c

E/AndroidRuntime(22280): 

E/AndroidRuntime(22280): This error is located at:

E/AndroidRuntime(22280):     in N

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in n

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in u

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in n

E/AndroidRuntime(22280):     in v

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in RCTView

E/AndroidRuntime(22280):     in c, stack:

E/AndroidRuntime(22280): value@1426:1854

E/AndroidRuntime(22280): re@966:8006

E/AndroidRuntime(22280): @966:8215

E/AndroidRuntime(22280): Ei@129:61221

E/AndroidRuntime(22280): Ri@129:63391

E/AndroidRuntime(22280): qi@129:66801

E/AndroidRuntime(22280): ea@129:69555

E/AndroidRuntime(22280): @129:81296

E/AndroidRuntime(22280): unstable_runWithPriority@207:3238

E/AndroidRuntime(22280): ja@129:81253

E/AndroidRuntime(22280): Oa@129:81007

E/AndroidRuntime(22280): Wa@129:80310

E/AndroidRuntime(22280): Aa@129:79323

E/AndroidRuntime(22280): sa@129:78013

E/AndroidRuntime(22280): enqueueSetState@129:29425

E/AndroidRuntime(22280): setState@61:2231

E/AndroidRuntime(22280): _onTransitionEnd@529:1004

E/AndroidRuntime(22280): p@264:1647

E/AndroidRuntime(22280): @257:1949

E/AndroidRuntime(22280): value@277:457

E/AndroidRuntime(22280): value@28:3600

E/AndroidRuntime(22280): @28:1144

E/AndroidRuntime(22280): value@28:2565

E/AndroidRuntime(22280): value@28:1114

E/AndroidRuntime(22280): 

E/AndroidRuntime(22280): 	at com.facebook.react.modules.core.ExceptionsManagerModule.showOrThrowError(ExceptionsManagerModule.java:54)

E/AndroidRuntime(22280): 	at com.facebook.react.modules.core.ExceptionsManagerModule.reportFatalException(ExceptionsManagerModule.java:38)

E/AndroidRuntime(22280): 	at java.lang.reflect.Method.invoke(Native Method)

E/AndroidRuntime(22280): 	at java.lang.reflect.Method.invoke(Method.java:372)

E/AndroidRuntime(22280): 	at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:372)

E/AndroidRuntime(22280): 	at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:158)

E/AndroidRuntime(22280): 	at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)

E/AndroidRuntime(22280): 	at android.os.Handler.handleCallback(Handler.java:739)

E/AndroidRuntime(22280): 	at android.os.Handler.dispatchMessage(Handler.java:95)

E/AndroidRuntime(22280): 	at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:29)

E/AndroidRuntime(22280): 	at android.os.Looper.loop(Looper.java:135)

E/AndroidRuntime(22280): 	at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:232)

E/AndroidRuntime(22280): 	at java.lang.Thread.run(Thread.java:818)

我想知道那个tab吸顶,怎么保持吸顶前后tab内容的高度呢

想知道你是怎么实现的,看代码,没看出来,我下了app,然后接口貌似都不能用;

就比如在tab1 上下滑动,再去tab2 上下滑动,你是怎么做到保持每个tab内容自己的高度呢,我这边有6个tab也许更多,我发现要分两种情况,一种是tab导航栏还没吸顶前,每个tab内容的滑动高度都统一; 第二种是当tab导航栏吸顶后,每个tab内容的滑动高度都是自己的高度,互不影响,但是我觉得好麻烦,不知道你是怎么实现的。

如果不做判断,向上滑动第一个tab的内容后,切换到第二个tab,第二个tab的高度还在原来的位置,但是上面的部分就跑到了tab滑动后的位置(这是应该的),然后第二个tab的内容上面就有一节空白位置,然后在向上滑动tab2 tab2上面的模块就直接到了tab2的头上,衔接tab2的上滑动画

页签嵌套在 scrollview 中

最近团队在开发中遇到这样一个需求,页面需要滚动,上面部分是动态加载的,下面是一个页签就是 tabview,上滑tab吸顶,本来以为是一个很正常的布局需求,结果做了才发现,各种不兼容啊,从 scroll-tab-view 到 tab-view 到 collapse-toolbar,到 antd、nativebase,到自定义 tab,包括外层使用 flatlist 不使用 scrollview,到子页签用自定义 scrollview 实现分页而不是 viewpager,到手势识别器滑动上面部分底下 tabview 跟随滚动,等等等等,没有一个完美的解决方案,各大博客论坛,均未找到。。。而开发友的实现,也并不完美,上面高度过高明显会有抖动现象,原生动画驱动不支持 top 属性太伤了。团队成员一直尝试未果,想和开发友聊聊,是否还有别的思路或者最近是否有新的进展。在下的联系方式为 QQ:761105568,望开发友看到消息能不吝指教

长图支持

打开长图时会缩成一条,无法放大和保存,希望下个版本在长宽比大到一定程度的时候可以自动适应宽度~

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.