Coder Social home page Coder Social logo

twitlatte's Introduction

twitlatte

Archived: This app hasn't maintained over years. This repository will be archived.

Because of these reasons, this application is hard to use now:

  • Twitter suspended the API usage of this app. (#54)
  • This app doesn't support new features, and new Android version.

Thank all users having used/helped this app for their contribution and patience.


This application is the SNS client for Android.

Icon of this app

  • Supported Android version is Android 4.4~9.0
  • Using REST API
  • Supported multiple account
  • Material design

Available SNS

  • Twitter
  • Mastodon
  • Pleroma

Install

Get it on Google Play Get it on F-Droid

How to build

It require Java8 and Android Studio 3.4 to build this project.

  1. Clone this project.
# Clone this project and some submodules.
git clone https://github.com/moko256/twitlatte.git --recursive

or,

# Clone this project.
git clone https://github.com/moko256/twitlatte.git

# Move to project's directory
cd twitlatte

# Clone or update some submodules.
git submodule update --init --recursive
  1. Open in Android Studio.

Note: Please turn off Instant Run in the settings. It may cause app's crash in debug build.

  1. Build.

Dependencies

This application is built using these libraries:

  • AndroidX
  • Material Components
  • Glide
  • Glide Transformations
  • google-gson
  • PhotoView
  • FlingLayout
  • japng
  • japng_android
  • OkHttp
  • mastodon4j
  • Twitter4J
  • twitter-text
  • RxJava
  • RxAndroid

and, built using these tools:

  • Android SDK
  • Android Studio
  • Gradle
  • Open JDK
  • Kotlin

License of this project

Copyright 2015-2019 The twitlatte authors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

twitlatte's People

Contributors

boffire avatar jiro-aqua avatar marclaporte avatar moko256 avatar poussinou 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

twitlatte's Issues

Mastodon Login

When starting the app for the first time and setting up the first Mastodon account, the input dialog asks for "URL". But if one inputs an URL (e.g. https://mastodon.technology) this results in an error (host not found: https).

Instead of "URL", the title should read "Instance" here. mastodon.technology (without the protocol) worked fine.

Regex muting not working on retweets

I'm glad that this program has regex mutes for tweets, but it doesn't seem to be working when people retweet a post with some of my muted words.

Show multiple accounts in the the timeline

I love the design of this app. But two things that are keeping me from switching is.

  1. Show multiple accounts in Timeline. If I'm logged into two or more accounts, I would love to only have to refresh one timeline and that shows me all the news. (See Twidere on F-droid for an example)
  2. Swipe between different things rather than open the menu. Between messages, interactions, etc.

Thanks!

Can`t save image from timeline

Hello. I`m using android 9, twitlatte 1.7.0 and tested it on both versions from F-droid and Play Market.
When i open image in timeline it has a button to save it. After i granted permission to storage and tap the button - nothing happens and image does not appear in gallery of my device.

Twitlatte crashes when liking on twitter

right now I'm on a landscape tablet (galaxy Note pro 12.2 running a custom Android Nougat rom)
Twitlatte simply crashes when liking something from twitter, this only happens when logged on Twitter and does not happen when liking stuff on Mastodon.

The app doesn't give a "application has stopped" message, it just sends me to my launcher without any kind of pop-up warning

F-Droid

Hi,

Since this app is Apache v2 licensed, are you considering the fact to add it to F-Droid? There is a strong community behind.

Your app has already been requested here.

You can find some documentation here.

Otherwise, if you don't want to work on the inclusion of this app by yourself, would it be ok for you if someone else do it for you?

social.weho.st

I'm trying to log in my mastodon instance social.weho.st but every time it appears a message handshake fail. however, other instances work without problems

A minor bug on login page

Twitlatte 1.2.2 from Google Play.
Hello,
it might not even be a bug and it is so on purpose, but here it is.
AFTER I am successfully logged in with my Twitter account I go to the sidebar where I see my account name, timeline, mentions... After that I click on my name and go to Login with another account. Two options appear, one for Twitter and one for Mastodon. Everything OK so far, I can go FORWARD with log in but I cannot go BACK to the feed, it simply exits from the app if I press back button on my phone, BUT if I repeat the process and login with the Twitter account(it's is done automatically after it goes first again to the external site) and I get back to the Twitter feed. In short, after getting to the login page there is no way back unless I sign in again. Otherwise really great work with the app!
Keep it up :) Best wishes.

[feature] Display replies?

Hi! Loving twitlatte so far :).

I was wondering whether you would consider displaying all answers given to a tweet, when a tap is made on a tweet?

Collapsing multiple muted tweets

I have a lot of things muted, mostly automated bot posts ... Could you add a way to compress the muted tweets into something like "42 Muted Posts"?

Screenshot_20190317-212634_twitlatte

Pic.twitter

What happens: When clicking pic.twitter.com/xxxxxxx it tries to load the picture but it says Oops, something went wrong...
Expected result: it opens the picture.
Kind regards.

[feature ideas] Auto-refresh, automatically open in default browser

Hello,
I would like to put forth a few ideas that I find neat.
Idea 1:

  • currently if you open the app and scroll down, leave the app and head back you are exactly where you were, you scroll to the top, you use pull down gesture and you get the updates. If any available it says New post - works great.
  • possible improvement would be to leave it as it is with additional auto-refresh feature for when you leave the app and head back -> it should auto-refresh itself immediately and displays the New post ribbon at the top(like now if there are new tweets). Bonus would be to click the ribbon New post and it would take you straight to the top of the feed.

Idea 2:

  • currently if you click URL link in the tweet the URL opens itself within the app->(if you want you click the three dots in the right upper corner->open in Firefox) - works great.
  • possible improvement would be to have an option in the settings to automatically open the URL link in the default browser(skipping the built in twitlatte browser). Why would this be good? If you want to read later all the URL links, you save with this optional setting two clicks per one URL link.

As of now I find the app really impressive as it does everything I need. I find the above features really neat, and so might others.

Kind regards!

Can't run the app

I followed the instructions in the README to build the app but when I try to run it in Android Studio it always crashes with the following error:

Process: com.github.moko256.twitlatte.debug, PID: 4439
    java.lang.RuntimeException: Unable to get provider androidx.lifecycle.ProcessLifecycleOwnerInitializer: java.lang.ClassNotFoundException: Didn't find class "androidx.lifecycle.ProcessLifecycleOwnerInitializer" on path: DexPathList[[zip file "/data/app/com.github.moko256.twitlatte.debug-yqpk1JRvXxvonbs3m5IlEg==/base.apk", zip file "/data/app/com.github.moko256.twitlatte.debug-yqpk1JRvXxvonbs3m5IlEg==/split_lib_resources_apk.apk", zip file "/data/app/com.github.moko256.twitlatte.debug-yqpk1JRvXxvonbs3m5IlEg==/split_lib_slice_0_apk.apk"],nativeLibraryDirectories=[/data/app/com.github.moko256.twitlatte.debug-yqpk1JRvXxvonbs3m5IlEg==/lib/x86, /system/lib, /system/vendor/lib]]
        at android.app.ActivityThread.installProvider(ActivityThread.java:6407)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:5949)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5864)
        at android.app.ActivityThread.access$1100(ActivityThread.java:200)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1651)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6680)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.lifecycle.ProcessLifecycleOwnerInitializer" on path: DexPathList[[zip file "/data/app/com.github.moko256.twitlatte.debug-yqpk1JRvXxvonbs3m5IlEg==/base.apk", zip file "/data/app/com.github.moko256.twitlatte.debug-yqpk1JRvXxvonbs3m5IlEg==/split_lib_resources_apk.apk", zip file "/data/app/com.github.moko256.twitlatte.debug-yqpk1JRvXxvonbs3m5IlEg==/split_lib_slice_0_apk.apk"],nativeLibraryDirectories=[/data/app/com.github.moko256.twitlatte.debug-yqpk1JRvXxvonbs3m5IlEg==/lib/x86, /system/lib, /system/vendor/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at android.app.AppComponentFactory.instantiateProvider(AppComponentFactory.java:121)
        at androidx.core.app.CoreComponentFactory.instantiateProvider(CoreComponentFactory.java:62)
        at android.app.ActivityThread.installProvider(ActivityThread.java:6391)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:5949) 
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5864) 
        at android.app.ActivityThread.access$1100(ActivityThread.java:200) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1651) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6680) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 
    	Suppressed: java.io.IOException: No original dex files found for dex location /data/app/com.github.moko256.twitlatte.debug-yqpk1JRvXxvonbs3m5IlEg==/split_lib_resources_apk.apk
        at dalvik.system.DexFile.openDexFileNative(Native Method)
        at dalvik.system.DexFile.openDexFile(DexFile.java:354)
        at dalvik.system.DexFile.<init>(DexFile.java:101)
        at dalvik.system.DexFile.<init>(DexFile.java:75)
        at dalvik.system.DexPathList.loadDexFile(DexPathList.java:394)
        at dalvik.system.DexPathList.makeDexElements(DexPathList.java:354)
        at dalvik.system.DexPathList.<init>(DexPathList.java:164)
        at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:74)
        at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:65)
        at dalvik.system.PathClassLoader.<init>(PathClassLoader.java:64)
        at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:73)
        at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:88)
        at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:74)
        at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:40)
        at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:727)
        at android.app.LoadedApk.getClassLoader(LoadedApk.java:810)
        at android.app.LoadedApk.getResources(LoadedApk.java:1032)
        at android.app.ContextImpl.createAppContext(ContextImpl.java:2345)
2018-12-23 20:54:56.623 4439-4439/? E/AndroidRuntime:     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5760)
        		... 8 more

Modify layout from quoted tweet

It's not easy telling if the tweet is quoted or not, an easy solution would be to make the quoted tweet looking like Twidere or the official Twitter app. Which in my opinion is clearer than that we have on this app.

[suggestion] Tweetmarker support

Support for Tweetmarker would be very useful for the Twitter mode, to sync between Twitter clients where I left on my timeline

スレッド読み込み機能が欲しい

ツイートに引用ツイート・メンションがついていた場合に、詳細画面でスレッドが読める機能が欲しい。
また、リプライを取得して読める機能もほしい。

Twitter refuses write requests due API limits

From adb logcat:

10-21 11:08:42.435 17589 17589 W System.err: 403:The request is understood, but it has been refused. An accompanying error message will explain why. This code is used when re
quests are being denied due to update limits (https://support.twitter.com/articles/15364-about-twitter-limits-update-api-dm-and-following).
10-21 11:08:42.435 17589 17589 W System.err: message - Application cannot perform write actions. Contact Twitter Platform Operations through https://support.twitter.com/forms
/platform
10-21 11:08:42.435 17589 17589 W System.err: code - 261
10-21 11:08:42.435 17589 17589 W System.err:
10-21 11:08:42.435 17589 17589 W System.err: Relevant discussions can be found on the Internet at:
10-21 11:08:42.435 17589 17589 W System.err:    http://www.google.co.jp/search?q=b9fdc443 or
10-21 11:08:42.435 17589 17589 W System.err:    http://www.google.co.jp/search?q=1100eeb7
10-21 11:08:42.435 17589 17589 W System.err: TwitterException{exceptionCode=[b9fdc443-1100eeb7], statusCode=403, message=Application cannot perform write actions. Contact Twi
tter Platform Operations through https://support.twitter.com/forms/platform, code=261, retryAfter=-1, rateLimitStatus=null, version=4.0.7}
10-21 11:08:42.435 17589 17589 W System.err:    at twitter4j.AlternativeHttpClientImpl.handleRequest(AlternativeHttpClientImpl.java:127)
10-21 11:08:42.435 17589 17589 W System.err:    at twitter4j.HttpClientBase.request(HttpClientBase.java:57)
10-21 11:08:42.435 17589 17589 W System.err:    at twitter4j.HttpClientBase.post(HttpClientBase.java:86)
10-21 11:08:42.435 17589 17589 W System.err:    at twitter4j.TwitterImpl.post(TwitterImpl.java:2102)
10-21 11:08:42.435 17589 17589 W System.err:    at twitter4j.TwitterImpl.retweetStatus(TwitterImpl.java:241)
10-21 11:08:42.435 17589 17589 W System.err:    at com.github.moko256.twitlatte.dt.b(StatusView.java:497)
10-21 11:08:42.435 17589 17589 W System.err:    at com.github.moko256.twitlatte.eo.a(Unknown Source:2)
10-21 11:08:42.435 17589 17589 W System.err:    at b.a.e.e.c.a.b(SingleCreate.java:39)
10-21 11:08:42.435 17589 17589 W System.err:    at b.a.n.a(Single.java:3394)
10-21 11:08:42.435 17589 17589 W System.err:    at b.a.e.e.c.g$a.run(SingleSubscribeOn.java:89)
10-21 11:08:42.436 17589 17589 W System.err:    at b.a.m$a.run(Scheduler.java:579)
10-21 11:08:42.436 17589 17589 W System.err:    at b.a.e.g.i.run(ScheduledRunnable.java:66)
10-21 11:08:42.436 17589 17589 W System.err:    at b.a.e.g.i.call(ScheduledRunnable.java:57)
10-21 11:08:42.436 17589 17589 W System.err:    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
10-21 11:08:42.437 17589 17589 W System.err:    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
10-21 11:08:42.437 17589 17589 W System.err:    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
10-21 11:08:42.437 17589 17589 W System.err:    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
10-21 11:08:42.437 17589 17589 W System.err:    at java.lang.Thread.run(Thread.java:764)

This happens in the f-droid variant. How is this handled in the play store version?
Would it help if enter my own API keys? If so, it would be great if I could do this in the application to not have to compile twitlatte myself.

Feature request: automatic updates

It would be great if twitlatte could check for new tweets periodically. Sometimes I forget to log into Twitter for a few days or a week and I miss a bunch of stuff. Having a configurable refresh rate from 5 - 1440 minutes would be very helpful for me.

Please move the reply button

Answering a toot with Twitlatte is something I should rather refrain from. Sometimes the nick ends exactly in front of the reply button – and I stopped counting how many empty replies I've sent when trying to position the cursor right behind the nick. So would it be possible to

  • make the input a text box (instead of a one-line input) and
  • position the reply button beneith it?

Speaking of replies: I couldn't yet figure how to view replies to a toot. Did I miss something, or is does that feature not (yet) exist?

[Feature request] Select account when opening app from link

Currently Twitlatte opens the app on the latest used account when opening from an external link.

This can be an issue when opening, say, a Mastodon link when I last used a Twitter account, as it wouldn't load. And viceversa, of course.

Having a pop-up letting the user chose with what account open the link would be optimal.
This might even implement issue #31 by having a "anonymous\not logged" choice as well.

Jump to top button

This might seem trivial, but for some of us heavy twitter users, even a few hours can translate to many seconds of tedious scrolling in twitlatte to get to the most recent ones. Unless there is a button I already missed, it would be very useful to have a simple jump-to-the-top button, e.g. in the bottom left corner when on the timeline and not fully scrolled up!

通信エラー時のスナックバーが出たままとなる

通信エラーが発生した時、スナックバーが表示されるが、
スワイプリフレッシュでリロードして成功した時にスナックバーが表示されたままとなる。
成功した時は消すようにした方がよいのでは?

bug found in twitlatte app ( add other account button is not working correctly )

Project Information

Expected behavior

according to my knowledge when i click on the other account button the application should open the new tab where i write the my account details

Actual behavior

after open the application when i open the application and click on the account button the account button is not working properly you can see in bug video

How to reproduce

  • download and open the application
  • click on setting button
  • click on account button
  • note the bug
  • Browser: twitlatte app Version 1.1.1
  • Operating system: android version 6.0.1

Recording Of The Bug

https://youtu.be/yjdByxVIDZw

Proof of Work Done

https://github.com/nasirshah1813

SSL Handshake Failed Exception

  1. Open twitlatte
  2. Touch "Mastodon Authorization"
  3. Enter "mastodon.gamedev.place"
  4. Press Ok

Error message appears.

Also, it would be helpful if the authorization dialog would store the last input in case the use had a typo or the like.

App crashes on screen rotation

Expected behavior

The app is supposed to be stable during screen rotation.

Actual behavior

But the app crashes when I change the screen orientation before granting permissions for location services on create post page.

How to reproduce

  1. Install the app.
  2. Launch the app.
  3. Authorise your twitter to open with this app.
  4. Click on + icon from bottom right corner of the app.
  5. Now click on the check box which says "Add location" and change the screen orientation to landscape before granting the permissions.

    The app crashes.
  • App Version: 1.1.0
  • Device: Samsung Galaxy J5
  • Operating System: Android 6.0.1

Recording Of The Bug

https://youtu.be/oIW03gWYLd8

Thanks!

Thanks for this great, free app.

I recently had to switch back to my old galaxy s3 and was looking for a client which worked better on this old phone. Twitlatte uses around 1/3 the memory of the official Twitter app, and half of the memory of Twitter Lite. Well done.

Share image directly

I want to share image to other app directly. There is currently only one button to save the image.

Repost across accounts

Currently it seems impossible to repost across accounts (e.g. from Mastodon to Twitter, or from one Mastodon account to another). Even if sharing to Twitlatte, one always ends up with the last-used account, again making this impossible.

To enable this, whenever shared to Twitlatte, Twitlatte should first ask for the account to share to.

Would that be a way to go?

No Mentions on Mastodon

On my Mastodon account, the "Mentions" page stays empty (and yes, I have quite a few of them, check for yourself: @[email protected]). No such issue with my Twitter account.

In case it matters: LG P880 (yeah, quite old this one) running Android 6 (thanks to an inofficial LOS). Twitlatte installed from F-Droid (was I the first?)

Sometimes boosts/retweets do not work

Not sure if someone else has noticed – but sometimes it seems impossible to boost or retweet. Trying that on the timeline then just opens the message, and trying there simply shows no reaction at all. Found no regularities, so I cannot tell how to reproduce.

Tag releases

Can you please tag your releases (see here), it would be helpful for the F-Droid release. You could also attach the binaries to your releases (see here).

That's pretty easy and very helpful for those of us who aren't using Google services.

#16

Opening Twitter links should not require logging in

In previous versions of the app, I was able to view Twitter links without signing in to a Twitter account. However, attempting to open a Twitter link with the app without an account now only shows the login screen.

This is undesirable, since twitlatte is a very lightweight client that provides a good alternative to Twitter's website, which is bloated and distracting and sometimes doesn't load.

Unless there is some obstacle to this feature, I would appreciate its return.

add popup

_add function to pop up when tweet list increases.

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.