GithubHelp home page GithubHelp logo

andstatus / andstatus Goto Github PK

View Code? Open in Web Editor NEW
307.0 28.0 69.0 47.32 MB

Multiple accounts client for multiple Social networks. For Android

Home Page: http://andstatus.org/

License: Apache License 2.0

HTML 0.41% XSLT 0.43% CSS 0.13% Shell 0.02% Kotlin 99.01%
pump-io mastodon-client twitter-client android-application gnu-social offline-capable android java activitypub activitystreams

andstatus's Introduction

AndStatus

AndStatus is an Open Source multiple accounts client for multiple Social networks, including Mastodon, ActivityPub (Client to Server), GNU social and Pump.io.
AndStatus can combine your feeds from all networks into one Timeline, and it allows you to read and post even when you are offline.

For Android v.7.0+ devices. Under Free/Libre and Open Source License.

Build status Quality Gate Status

See the Change Log for descriptions of all the features of AndStatus and for the links to their discussion.

Get it on Google Play Get it on F-Droid

Differentiating features of AndStatus:

  • Many accounts in different Social networks. You may have several accounts in each, write/reply as any "You" and share between accounts and systems.
  • You don't need to be online to read timelines and to post your updates: drafts and unsent posts are kept even after reboot. They will be sent when your device is Online.
  • Convenient tree-like "Conversation view".
  • "Global search" allowing you to search public messages in all networks with one query.
  • Lists of Friends and Followers, presented as User Lists and as Timelines (with the latest message of each user)
  • Tweets/messages/avatars/attached images are being synced in a background, when your device has a good connection. By default, attachments are downloaded via WiFi only.
  • Cached data may be stored for years or for several days only - it's your choice.
  • Backup and restore accounts and messages between your devices. Own your data!
  • Free and without ads, community supported.

Read the FAQ to help you find information that is not present on this page.

The Home Timeline with an image attached The Home Timeline with an image attached Context Menu Conversation tree

For the latest news on the project please follow [email protected]. Project accounts also present @[email protected] at Pump.io, @[email protected] at GNU Social.

AndStatus is an open project:

  • Open for user's ideas, problems and questions. Please start from searching at the "Issues" page. Take part in discussions there. If nothing relevant was found, raise your "issue" sharing with the AndStatus community your idea, question or a problem (providing as much details as possible in order to understand and reproduce the problem).
  • Open Beta Testing channel invites volunteer testers. Please opt in at Google Play and start to receive both Beta and Production releases the usual way. You can opt out at any time.
  • Multilingual. Crowdsourcing and collaborative localization project invites volunteer translators: AndStatus at Crowdin.
  • Open Source, open for contributing developers. If you are a Developer, AndStatus project will help you to implement your unique Social networking features, because you can build on working code supported by a suite of automated tests (see the video). Travis CI is used for continuous testing of the code in a publicly available repository and pull requests. SonarQube checks code quality and helps improving it.
  • Source code is hosted in the two popular services: GitHub and GitLab. The code is commented and has links to related information on Internet. Please read the Developer FAQ page for more info on building AndStatus application from the Source code.

You may donate to AndStatus development via its founder/lead developer.

andstatus's People

Contributors

cotsog avatar jurf avatar kvnco avatar matthiasjordan avatar sebastien46 avatar veyndan avatar vinzv avatar yvolk 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

andstatus's Issues

Better tagging

IT is difficult to tell at what commits apks should be built for release. Tagging is best, next is a commit comment that is just for a new version. The other methods we use on F-Droid involve looking at other published apks, but that isn't very easy with this app: there are multiple apks on Google Play and the apks here are rather old.

Don't leave not guaranteed commands in the execution and retry queues

Only commands which require guaranteed delivery, should stay in the queue in case an execution stopped.
Examples of "guaranteed delivery" commands: "Send status update", "Retweet", "Favorite".
Examples of not guaranteed commands: "check rate", ... (these commands may be repeated later...)

Date parse error causes crash of the application

Reported to Google Play:
In the org.andstatus.app.net.ConnectionTwitter.userFromJson(JSONObject) method

this line:

user.createdDate = Date.parse(createdAt);

causes exception:

Caused by: java.lang.IllegalArgumentException: Parse error: Wed Nov 27 09:27:01 -0300 2013
at java.util.Date.parseError(Date.java:367)
at java.util.Date.parse(Date.java:448)
at org.andstatus.app.net.ConnectionTwitter.userFromJson(ConnectionTwitter.java:370)
at org.andstatus.app.net.ConnectionTwitter.verifyCredentials(ConnectionTwitter.java:491)

The date string "Wed Nov 27 09:27:01 -0300 2013" is definitely hardly parsed... but in any case the error should be localized to the single operation.

Manual refresh

I enjoy the minimalism of And status, but my phone is minimal on RAM too and well it would be nice to have it not run as a service, in combination with a manual option for refreshing.

Add Combined Timeline

In case of many accounts it's becoming harder to check for new messages in each account.
A "Combined timeline" allows both read all new messages in one stream
and search for all messages stored locally in all accounts, even if they were downloaded from different systems.
The Combined timeline shows not only actual "Timelines" (Home, Favorites, Messages, Mentions), but also messages, downloaded during other requests: e.g. previous messages of the Conversations.

We should allow posting status updates, replying etc. from the Combined timeline. This means that selection of the Combined timeline should be independent from (existing) Account selection.

Status.net terminology should be used

When using a status.net account, Twitter terminology should be avoided [such as "tweet"].

Even specific terms relating to identi.ca should be generalized, one could be using a status.net personal instance for example.
The mustard app has many examples to draw from.

Improve Retweet support, including showing retweets from people I follow

I've noticed two related AndTweet inconsistencies with twitter.com behavior:

  1. Retweets made in AndTweet are NOT "Retweets" from twitter.com point of
    view. They are just ordinary tweets, containing "RT @use_name...".
  2. AndTweet doesn't show in the timeline tweets that are "Real retweets"
    from twitter.com point of view (but I can see them in the same timeline
    through twitter.com web interface. Such "Real retweets" by people that I
    follow are shown (by twitter.com) as tweets of some other people (that I
    don't follow) with such comments.

The problem appeared in using "statuses/friends_timeline" API instead of "statuses/home_timeline". From "https://dev.twitter.com/docs/api/1/get/statuses/friends_timeline":

This method is deprecated and has been replaced by GET statuses/home_timeline. Please update your applications with the new endpoint.

I think "Friends" menu item should be replaced with "Home" also to reflect this change.

Add Multiple Account Support

The idea is not new, and it's purpose was well formulated at http://mashable.com/2009/05/18/twitter-apps-manage-multiple-accounts/
"As more and more people are using Twitter for personal and professional reasons, the demand for a Twitter client to match those multifaceted needs is rising...".

Current state (as of AndStatus v.1.4.2) and expected tasks:

  1. Database schema already supports multiple account. Maybe we will need to add new table, maybe not.
  2. Account class already exists and it allows to list existing accounts and add new account. No "Delete" function yet though.
  3. Switching between Accounts in already implemented but it's not really comfortable nor intuitive (user has to type account name manually in preferences). I guess we can easily borrow interface from Android stock eMail application!
  4. Timelines synchronization procedures should be extended to loop through all accounts (now only one, current account is being syncronized automatically).

Make notifications sent by MyService to Activities more targeted

  • Currently Activity doesn't know if the Service is notifying it of its command completion or of completion of a command, sent by other Activity (or initiated by timer...)
  • We should notify both on Success and on Failure. Failure may be temporal (if we put the command into the Queue...)

Move as much data as possible from SharedPreferences (files) to the database

Android SharedPreferences are not reliable, especially when they maybe changed concurrently and often by different processes and threads.

I always had problems with preferences' visibility between processes (UI and a service), and recently I simply lost all my SharedProperties without any obvious reason. Thanks God my Sqlite database was never corrupted in four years.

Pump.io support

Only another few weeks before Identi.ca switches to pump.io from statusnet. The API is different, so something needs to be done to the code for it to continue to work. Not sure what, but just thought I would float the idea. There is only one Android app that supports pump.io, called Impeller on Github too.

Answering in thread view

When clicking on a message that is part of a complete thread you see the thread list. It should be possible to answer to posts from there as well.

Show the whole conversation tree including later replies

Currently AndStatus in the Conversation view searches only for previous messages in the thread, requesting them from the Microblogging server, if necessary.
On the other hand, as soon as AndStatus stores messages in its local database, it is possible to find (at least some of) later replies and also replies from the other "branches" of the same conversation.
The task is to provide for the User experience, close to that in web interface, where a User is able to browse / to see the whole conversation tree.
We are expecting to use indentation to visually separate different branches of the conversation.

Suggested by McScx: "IMO display of whole conversations on mobile is desirable. I'm often unsure whether to answer, if I don't know what others said"

Only 5 mentions/replies are shown

I am not seing more than 5 replies/mentions. This should be more, filling the screen and load more on demand as one scrolls down.

No direct URL shortener

When writing a message it is not possible to shorten the URL before sending. Identi.ca does shorten the URL, but after the message is send. Giving the user the option to shorten the URL before sending will result in having more characters left to type, especially with large URLs.

I would advice a URL shortener button to the right top of the "send" button. There seems to be no real standard on how to show an URL shortener button, but I really like the Seesmic approach. It's an icon with a chain being compressed by to arrows(triangles). Looking around the web gives you similar approaches.
seesmic-post-screen

Also the Microsoft Windows Phone URL shortener icon is an option http://www.windowsphone.com/en-us/store/app/url-shortener/7cc02e37-a978-e011-986b-78e7d1fa76f8

Add Pocket integration for reading the linked web content offline

The goal is to enable not only offline reading of the text of the messages (tweets) - this is present in AndStatus from day one, but offline reading of the linked (referenced) pages also. From the first glance at the Pocket documentation it shouldn't be a big deal.

I was actually thrilled by the Pocket ( http://getpocket.com/developer/docs/getstarted/android ) ability to save pages for offline reading.
Currently AndStatus User may "Share" a message (tweet) from AndStatus as: "Add to Pocket" - and voila: the page is queued for offline reading.
What I'm thinking here about is to integrate with the Pocket deeper, so that clicking on a link in a message would open the Pocket offline page in case the user is offline or in bad communication conditions...
As I see it now, AndStatus may ask Pocket to save ALL pages, linked to the Favorited messages. So a User will automatically have linked content of all Favorited messages ready for the Offline reading.

Add status.net autonomous instance support.

Status.net, the software that is used to tun the identi.ca service, can be installed on one's own server and also offers an online commercial service.
This bug is to request support for such more generic status.net instances.

The mustard app implements this nicely.

status.net support

Even though identi.ca has changed to pump.io there are many status.net servers outside (and servers that are compatible to the status.net API).

It would be great if andstatus could have again status.net support. (Login via username and password would be the first choice with many small servers - not oAuth)

Add "Follow/Unfollow" actions

These actions may be added to the context menu of the message.
This issue requires database update: currently there is no place to store "Follow" information.

"Not all messages were sent" notification message when network is unreachable

When network can not be reached by the phone and one or more actions are waiting, a notification message displays "Not all messages were sent", whereas most of time, the awaiting action is just a refresh of the timeline.
Maybe a quick fix could be to simply change this message for a more general one.

Edit : Actually I did not pay attention in the first time, but I am now wondering if this might be linked to this issue #10

Preserve screen position after content update

I've noticed that if I'm looking at timeline and background service adds new messages to the timeline, current position moves. As I guess, it moves up to the same absolute position in the list which now shows newer message (tweet).
This behavior was always in AndStatus...

java.lang.NullPointerException in org.andstatus.app.account.AccountSettingsActivity.onResume

java.lang.RuntimeException: Unable to resume activity {org.andstatus.app/org.andstatus.app.account.AccountSettingsActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2653)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2681)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4944)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at org.andstatus.app.account.AccountSettingsActivity.onResume(AccountSettingsActivity.java:298)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1199)
at android.app.Activity.performResume(Activity.java:5262)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2643)
... 10 more

v.1.16.0.

User message:
installed andstatus. then manage accounts took me to settings. then adding account for andstatus was successful. then hitting back button crashed the app.

PS: Thanks for the report!

Add an option to expand shortened URLs

See the service description: http://longurl.org

The feature will serve two purposes:

  1. Know where the link will really lead you before you click it.
  2. Speed up link access by asynchronously expanding URLs beforehand (should be configurable, when/whether/how to do this...)

April 2019: now we should think about "Link previews". That would be really interesting to add this (as an optional) feature. Information for such previews could be extracted from the target page metadata (header only? or maybe there other other protocols to retrieve page metadata?)
I didn't realize that some web pages have markup specifically for such previews (e.g. "Twitter cards" https://developer.twitter.com/en/docs/tweets/optimize-with-cards/guides/getting-started )

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.