tuskyapp / tusky Goto Github PK
View Code? Open in Web Editor NEWAn Android client for the microblogging server Mastodon
Home Page: https://tusky.app
License: GNU General Public License v3.0
An Android client for the microblogging server Mastodon
Home Page: https://tusky.app
License: GNU General Public License v3.0
When I select a toot that has received replies from multiple different users, it looks as though all the replies are threaded together.
When I select the actual reply toots, you can see that they are not.
Somewhere around Alpha.7 to the latest release (Alpha.8 as I post), push notifications stopped working. I haven't seen a single one since Alpha.6.
...with at least an "open in browser" option. This option already exists when viewing a profile, but the same interface should apply when viewing a toot.
Typing in the content warning field in the composer doesn't affect the counter. It tries to post if actually over the character limit and the post request is just rejected by the server.
Pressing the login with mastodon
on the login page opens the URL of the instance login page of via the Web browser. Neither Tusky nor the instance Web page explains why it's required to log into Mastodon on the Web to connect the app to the user account.
A few words on these login pages could explain the process:
At first, I thought I was directed to the Web because Tusky was down or because the app wasn't compatible with my instance.
When I try and reply to a boosted toot, the only name that gets filled in as who I am replying to is the booster's account, not the original tooter's account. This is inconsistent with what happens in the main site, which fills in the name of the original tooter's account.
At the very least it should be consistent with the site, but I might as ask @Gargron to make it work like Twitter, where both the original tooter'sโ and the booster's accounts are filled in when replying.
The author requested for this app to be removed on F-Droid. Inclusion of non-free services prevents some users from installing the app. Personally, I don't even have Google Play installed on my phone at all. Hoping you will reconsider this, as everyone is willing to use free software but many people aren't willing to use nonfree software.
Thank you!
I can't connect to the Mastodon instance i use.
I have the message: "This app could not obtain authentication from that server instance"
i have in the adb logcat the following message when i click on the Login with Mastodon button:
I run the app on Android 7.
The server used is https://social.targaryen.house
it use strict tls version, you can see here: https://tls.imirhil.fr/https/social.targaryen.house
04-03 01:11:05.560 1477-1477/com.keylesspalace.tusky W/System.err: javax.net.ssl.SSLHandshakeException: Handshake failed
04-03 01:11:05.561 1477-1477/com.keylesspalace.tusky W/System.err: at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:429)
04-03 01:11:05.562 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:267)
04-03 01:11:05.562 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:237)
04-03 01:11:05.562 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:148)
04-03 01:11:05.563 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:186)
04-03 01:11:05.563 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:121)
04-03 01:11:05.563 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:100)
04-03 01:11:05.564 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
04-03 01:11:05.564 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
04-03 01:11:05.564 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
04-03 01:11:05.565 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
04-03 01:11:05.565 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
04-03 01:11:05.565 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
04-03 01:11:05.566 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
04-03 01:11:05.566 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
04-03 01:11:05.567 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:120)
04-03 01:11:05.567 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
04-03 01:11:05.567 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
04-03 01:11:05.568 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:179)
04-03 01:11:05.568 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.RealCall$AsyncCall.execute(RealCall.java:129)
04-03 01:11:05.569 1477-1477/com.keylesspalace.tusky W/System.err: at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
04-03 01:11:05.569 1477-1477/com.keylesspalace.tusky W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
04-03 01:11:05.569 1477-1477/com.keylesspalace.tusky W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
04-03 01:11:05.570 1477-1477/com.keylesspalace.tusky W/System.err: at java.lang.Thread.run(Thread.java:776)
04-03 01:11:05.571 1477-1477/com.keylesspalace.tusky W/System.err: Suppressed: javax.net.ssl.SSLHandshakeException: Handshake failed
04-03 01:11:05.572 1477-1477/com.keylesspalace.tusky W/System.err: ... 24 more
04-03 01:11:05.573 1477-1477/com.keylesspalace.tusky W/System.err: Caused by: javax.net.ssl.SSLProtocolException: SSL handshake terminated: ssl=0x7646f11a40: Failure in SSL library, usually a protocol error
04-03 01:11:05.574 1477-1477/com.keylesspalace.tusky W/System.err: error:10000410:SSL routines:OPENSSL_internal:SSLV3_ALERT_HANDSHAKE_FAILURE (external/boringssl/src/ssl/s3_pkt.c:610 0x76460766e0:0x00000001)
04-03 01:11:05.574 1477-1477/com.keylesspalace.tusky W/System.err: error:1000009a:SSL routines:OPENSSL_internal:HANDSHAKE_FAILURE_ON_CLIENT_HELLO (external/boringssl/src/ssl/s3_clnt.c:764 0x7657bf2f76:0x00000000)
04-03 01:11:05.574 1477-1477/com.keylesspalace.tusky W/System.err: at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
04-03 01:11:05.575 1477-1477/com.keylesspalace.tusky W/System.err: at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:357)
04-03 01:11:05.575 1477-1477/com.keylesspalace.tusky W/System.err: ... 23 more
04-03 01:11:05.576 1477-1477/com.keylesspalace.tusky W/System.err: Caused by: javax.net.ssl.SSLProtocolException: SSL handshake terminated: ssl=0x7646f11a40: Failure in SSL library, usually a protocol error
04-03 01:11:05.577 1477-1477/com.keylesspalace.tusky W/System.err: error:1000042e:SSL routines:OPENSSL_internal:TLSV1_ALERT_PROTOCOL_VERSION (external/boringssl/src/ssl/s3_pkt.c:610 0x76460766e0:0x00000001)
04-03 01:11:05.577 1477-1477/com.keylesspalace.tusky W/System.err: at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
04-03 01:11:05.577 1477-1477/com.keylesspalace.tusky W/System.err: at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:357)
04-03 01:11:05.578 1477-1477/com.keylesspalace.tusky W/System.err: ... 23 more
Would be nice to have the ability to have multiple instances running, this will probably be a thing sooner rather than later.
If a user favorites my toot, I should be able to click somewhere in the notification to view their profile.
Not sure what exactly I've done, but after some random usage, this occurs when trying to favourite:
Exception java.lang.NullPointerException:
com.keylesspalace.tusky.SFragment.favourite (SFragment.java:121)
com.keylesspalace.tusky.TimelineFragment.onFavourite (TimelineFragment.java:266)
com.keylesspalace.tusky.StatusViewHolder$9.onEvent (StatusViewHolder.java:320)
com.varunest.sparkbutton.SparkButton.onClick (SparkButton.java:252)
android.view.View.performClick (View.java:4569)
com.varunest.sparkbutton.SparkButton$2.onTouch (SparkButton.java:273)
android.view.View.dispatchTouchEvent (View.java:7837)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2214)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:1945)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2220)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:1959)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2220)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:1959)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2220)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:1959)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2220)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:1959)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2220)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:1959)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2220)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:1959)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2220)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:1959)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2220)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:1959)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2220)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:1959)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2220)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:1959)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2220)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:1959)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2220)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:1959)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2220)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:1959)
com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent (PhoneWindow.java:2072)
com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent (PhoneWindow.java:1519)
android.app.Activity.dispatchTouchEvent (Activity.java:2468)
android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent (WindowCallbackWrapper.java:71)
com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent (PhoneWindow.java:2020)
android.view.View.dispatchPointerEvent (View.java:8022)
android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent (ViewRootImpl.java:3966)
android.view.ViewRootImpl$ViewPostImeInputStage.onProcess (ViewRootImpl.java:3845)
android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:3405)
android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:3455)
android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:3424)
android.view.ViewRootImpl$AsyncInputStage.forward (ViewRootImpl.java:3531)
android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:3432)
android.view.ViewRootImpl$AsyncInputStage.apply (ViewRootImpl.java:3588)
android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:3405)
android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:3455)
android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:3424)
android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:3432)
android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:3405)
android.view.ViewRootImpl.deliverInputEvent (ViewRootImpl.java:5557)
android.view.ViewRootImpl.doProcessInputEvents (ViewRootImpl.java:5537)
android.view.ViewRootImpl.enqueueInputEvent (ViewRootImpl.java:5508)
android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent (ViewRootImpl.java:5637)
android.view.InputEventReceiver.dispatchInputEvent (InputEventReceiver.java:185)
android.os.MessageQueue.nativePollOnce (MessageQueue.java)
I can't find a way to get the video controls to reappear once a video has finished playing, this seems like a bug unless I'm doing something wrong.
There are a few basic UI elements one expects to find that are missing.
Most notably headers for the preferences panes need to be added that tell what screen you're even looking at and have back buttons. Individual toot screens have this as expected but the preference screens don't.
When scrolling way down in a timeline there doesn't seem to be an easy way back to the top. One is forced to flick enough to scroll all the way back.
An "About" entry in the main nav with links to the project page and where to file issues would also be nice.
When more than one media item is attached to a toot, after opening one of them in the full screen preview mode swiping left/right should navigate between them. Currently you have to back out to the previous screen and tap on the next item which is somewhat cumbersome.
Exception java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.keylesspalace.tusky.entity.Account.header' on a null object reference
com.keylesspalace.tusky.MainActivity$10.onResponse (MainActivity.java:365)
retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run (ExecutorCallAdapterFactory.java:68)
android.os.Handler.handleCallback (Handler.java:739)
android.os.Handler.dispatchMessage (Handler.java:95)
android.os.Looper.loop (Looper.java:148)
android.app.ActivityThread.main (ActivityThread.java:5441)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:738)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:628)
Exception java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.view.ViewGroup.getContext()' on a null object reference
android.support.design.widget.Snackbar.make (Snackbar.java:136)
android.support.design.widget.Snackbar.make (Snackbar.java:165)
com.keylesspalace.tusky.ViewThreadFragment.onThreadRequestFailure (ViewThreadFragment.java:124)
com.keylesspalace.tusky.ViewThreadFragment.access$200 (ViewThreadFragment.java:37)
com.keylesspalace.tusky.ViewThreadFragment$1.onFailure (ViewThreadFragment.java:95)
retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$2.run (ExecutorCallAdapterFactory.java:77)
android.os.Handler.handleCallback (Handler.java:739)
android.os.Handler.dispatchMessage (Handler.java:95)
android.os.Looper.loop (Looper.java:148)
android.app.ActivityThread.main (ActivityThread.java:5441)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:738)
com.keylesspalace.tusky.SFragment.reply (SFragment.java:74)
com.keylesspalace.tusky.NotificationsFragment.onReply (NotificationsFragment.java:215)
com.keylesspalace.tusky.StatusViewHolder$7.onClick (StatusViewHolder.java:309)
android.view.View.performClick (View.java:5637)
android.view.View$PerformClick.run (View.java:22429)
android.os.Handler.handleCallback (Handler.java:751)
android.os.Handler.dispatchMessage (Handler.java:95)
android.os.Looper.loop (Looper.java:154)
android.app.ActivityThread.main (ActivityThread.java:6119)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:886)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:776)
com.keylesspalace.tusky.SFragment.reblog (SFragment.java:99)
com.keylesspalace.tusky.TimelineFragment.onReblog (TimelineFragment.java:279)
com.keylesspalace.tusky.StatusViewHolder$8.onEvent (StatusViewHolder.java:315)
com.varunest.sparkbutton.SparkButton.onClick (SparkButton.java:252)
android.view.View.performClick (View.java:4569)
com.varunest.sparkbutton.SparkButton$2.onTouch (SparkButton.java:273)
android.view.View.dispatchTouchEvent (View.java:7837)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2214)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:1945)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2220)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:1959)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2220)
Clicking a hyperlinked @username in a toot opens the profile page in the Web browser instead of in Tusky (when the user is in a remote instance).
For some reasons, clicking the avatar of the same user opens the profile in the app (as expected).
This behavior isn't consistent and it makes it very difficult to follow remote users.
Hi!
When browsing Mastodon with a mobile data connection, it might be a good thing to be able not to download media, like, for example, what is done in Twidere.
When I turn around my phone from portrait to landscape, the app instantly crashes on the profile view. I don't know if it's a device specific issue, but I guess some people might have this problem as well.
Exception java.lang.IllegalArgumentException: Illegal URL: https://
retrofit2.Retrofit$Builder.baseUrl (Retrofit.java:452)
com.keylesspalace.tusky.LoginActivity.getApiFor (LoginActivity.java:101)
com.keylesspalace.tusky.LoginActivity.onButtonClick (LoginActivity.java:148)
com.keylesspalace.tusky.LoginActivity.access$600 (LoginActivity.java:45)
com.keylesspalace.tusky.LoginActivity$2.onClick (LoginActivity.java:172)
android.view.View.performClick (View.java:5637)
android.view.View$PerformClick.run (View.java:22429)
android.os.Handler.handleCallback (Handler.java:751)
android.os.Handler.dispatchMessage (Handler.java:95)
android.os.Looper.loop (Looper.java:154)
android.app.ActivityThread.main (ActivityThread.java:6119)
java.lang.reflect.Method.invoke (Method.java)
Likely when clicking login with nothing entered in the EditText
When a mobile notification is tapped on, Tusky opens (good) in the "Home" tab (bad). It would be much better in one could read the notifications directly, without having to swipe to the side.
I'm frequently seeing both my home and federated timeline having duplicate posts, in one case my own post appeared twice (it didn't get boosted so that isn't the problem) this makes using Tusky difficult and confusing, I feel that this should be a priority bug fix. Version is Tusky 1.0.1.
Should bugs be reported to GitHub, Playstore or both?
Not sure what exactly I did prior to this
Exception java.util.NoSuchElementException:
java.util.Vector.lastElement (Vector.java:621)
com.keylesspalace.tusky.MainActivity.onBackPressed (MainActivity.java:412)
android.app.Activity.onKeyUp (Activity.java:2196)
android.view.KeyEvent.dispatch (KeyEvent.java:2683)
android.app.Activity.dispatchKeyEvent (Activity.java:2433)
android.support.v7.app.AppCompatActivity.dispatchKeyEvent (AppCompatActivity.java:541)
android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent (WindowCallbackWrapper.java:59)
android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent (AppCompatDelegateImplBase.java:319)
com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent (PhoneWindow.java:1966)
android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent (ViewRootImpl.java:3864)
android.view.ViewRootImpl$ViewPostImeInputStage.onProcess (ViewRootImpl.java:3838)
android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:3405)
android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:3455)
android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:3424)
android.view.ViewRootImpl$AsyncInputStage.forward (ViewRootImpl.java:3531)
android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:3432)
android.view.ViewRootImpl$AsyncInputStage.apply (ViewRootImpl.java:3588)
android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:3405)
android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:3455)
android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:3424)
android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:3432)
android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:3405)
android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:3455)
android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:3424)
android.view.ViewRootImpl$AsyncInputStage.forward (ViewRootImpl.java:3564)
android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent (ViewRootImpl.java:3730)
android.view.inputmethod.InputMethodManager$PendingEvent.run (InputMethodManager.java:2019)
android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback (InputMethodManager.java:1713)
android.view.inputmethod.InputMethodManager.finishedInputEvent (InputMethodManager.java:1704)
android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished (InputMethodManager.java:1996)
android.view.InputEventSender.dispatchInputEventFinished (InputEventSender.java:141)
android.os.MessageQueue.nativePollOnce (MessageQueue.java)
android.os.MessageQueue.next (MessageQueue.java:138)
android.os.Looper.loop (Looper.java:123)
android.app.ActivityThread.main (ActivityThread.java:5124)
java.lang.reflect.Method.invokeNative (Method.java)
java.lang.reflect.Method.invoke (Method.java:515)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:797)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:613)
dalvik.system.NativeStart.main (NativeStart.java)
It seems that if you never received a notification the tab loading will spin indefinitely, not a big issue but it'll happen to all new users.
Feature request to at some point have the Light Theme come back which I can't find in version 1.0.0.
Can tap on hashtags in toots (posts) in my Timeline, but cannot specifically search for any hashtags, just for users? As workaround I can write a new post with the hashtag I'd like to search for in it. But it's kinda.....
The current header takes up two lines, one for the menu and one for tabs.
While this isn't bad looking, I think it takes up more space than it needs to. First of all the search really isn't that useful. Since it's only a username lookup function and used relatively infrequently, I think it could be relegated to a main menu item or a tab of it's own. This would easily allow the tab bar to move up into the first row of the header.
A good example of this one line approach for a similar scenario is Twittnuker's main screen:
I think Tusky could benefit from this slimmer UI approach. Search could be an item under the main app menu.
Tusky v 1.0.3
Steps to reproduce:
Result:
Expected result:
Push notifications aren't working on 1.0.1, just got someone favoring a status, no notification. Double checked Tusky has permission to do notifications and it does.
Edit: Seems push notifications are fine for mentions, just not favourites or boosts, edited issue appropriately.
When a mobile notification comes for several Mastodon notifications, Tusky seems to show the avatar associated with the user in the oldest Mastodon notification, but the text of the newest.
For example: if @aaa sends me a "hi!", and then @BBB sends me "Hello there!", the Tusky mobile notification will show @aaa's avatar with the text "Hello there!".
Small clarification: I usually have internet off on the phone, that's why it's pretty common for me to receive several Mastodon notifications in the same Tusky mobile notification. You might need to do that in order to reproduce the bug.
It's really handy to be able to copy a link to a specific toot so I can share it with others, so making this feature request. Please add the ability to copy links of toots.
Exception java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
com.keylesspalace.tusky.TimelineAdapter.getItemCount (TimelineAdapter.java:75)
android.support.v7.widget.RecyclerView.dispatchLayoutStep1 (RecyclerView.java:3447)
android.support.v7.widget.RecyclerView.dispatchLayout (RecyclerView.java:3264)
android.support.v7.widget.RecyclerView.onLayout (RecyclerView.java:3798)
android.view.View.layout (View.java:16653)
android.view.ViewGroup.layout (ViewGroup.java:5438)
android.support.v4.widget.SwipeRefreshLayout.onLayout (SwipeRefreshLayout.java:636)
android.view.View.layout (View.java:16653)
android.view.ViewGroup.layout (ViewGroup.java:5438)
android.support.v4.view.ViewPager.onLayout (ViewPager.java:1795)
android.view.View.layout (View.java:16653)
android.view.ViewGroup.layout (ViewGroup.java:5438)
Like twitter clients, would be nice to be able to share content (links mostly) from other apps (like youtube or chrome on Mastodon from the app :)
(ps: since I look into how it works here's a link: https://developer.android.com/training/sharing/receive.html)
Hi
i search on code (i'm not very good on java so maybe i don't see if possible) but i don't found translate file.
It's cool if app Can be translate (i Can translate on french) :)
Having the ability to close open media quickly would be a great feature. As of the 1.0.0 release there is no way to close a media zoom/link without pressing the back button, adding the ability to swipe up to dismiss or some other direction would make navigation much better.
Exception java.lang.IllegalStateException: Fragment NotificationsFragment{41efcca8} not attached to Activity
android.support.v4.app.Fragment.getResources (Fragment.java:646)
android.support.v4.app.Fragment.getString (Fragment.java:668)
com.keylesspalace.tusky.NotificationsFragment.onFetchNotificationsSuccess (NotificationsFragment.java:175)
com.keylesspalace.tusky.NotificationsFragment.access$300 (NotificationsFragment.java:41)
com.keylesspalace.tusky.NotificationsFragment$3.onResponse (NotificationsFragment.java:144)
retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run (ExecutorCallAdapterFactory.java:68)
android.os.Handler.handleCallback (Handler.java:733)
android.os.Handler.dispatchMessage (Handler.java:95)
android.os.Looper.loop (Looper.java:136)
android.app.ActivityThread.main (ActivityThread.java:5124)
java.lang.reflect.Method.invokeNative (Method.java)
java.lang.reflect.Method.invoke (Method.java:515)
I wonder if there is a retrofit equivalent of cancelling all requests onDestroy, because I think that's what this is caused by? It sounds like the onSuccess callback is firing after the fragment has been detached
Hi,
I'm using Tusky version 1.0.0-alpha.5 from the F-droid repository.
I have only one follower on my Mastodon account and when I go to the Followers tab this one follower is looping infinitely. Same if I list the only follower of another profile.
On a profile with 2 followers, the two are repeated alternatively.
Cheers.
* Method of authentication for the app server? Simple but long API key? Should requests be signed with an API secret?
It's pretty easy to forget what the privacy level of my last toot was. Since the privacy level is persistent at each toot, I often come back and accidentally send out a private toot that was meant to be public. Right now, the only way to know what the current privacy level is set at is by clicking on the globe icon as if I was going to change that setting. It would be nice to have some small indicator of the privacy level of the toot immediately visible on the Compose tab.
App Version: 1.1.0
Android Version: 7.1.2
Push notifications haven't ever been very reliable for me, but since moving to my own Mastodon instance, I wanted to confirm that I should still get push notifications from my instance? Also, any idea why pushes are so unreliable?
Would be nice to have the ability to download attached media (photos...) directly from the app
Hi there, please update the f-droid repo.
There are at least a few people using your client already.
Version 1.0.0-alpha.5 - Added on 2017-02-24
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.