GithubHelp home page GithubHelp logo

klinker24 / talon-for-twitter-android Goto Github PK

View Code? Open in Web Editor NEW
1.2K 38.0 184.0 539.82 MB

The most powerful and beautiful Twitter client available.

Home Page: https://klinkerapps.com/talon-overview

Java 97.61% Ruby 0.05% Kotlin 2.34%
twitter android talon java kotlin twitter-api app

talon-for-twitter-android's Introduction

Annoucement: As of January 13th, 2023, Twitter has decided that an app recreating the original experience violates their Terms of Service. You may still be able to build and use Talon through your own Twitter developer account, but development will no longer continue for the product unless their stance changes in the future.

Talon for Twitter

promo

This is the complete version of the Twitter client that I created for Android. It is 100% open source, the only thing that you will have to do plug in is your own API keys.

I am lucky enough to say that, as a paid app, Talon has perched itself at the top of the top paid social apps list since it's release in 2014. It has amassed 100,000+ downloads while holding a 4.6 star rating on the Play Store. This app is one of the more successful apps I have ever made and I am open sourcing it as a "thank you" to everyone that has supported my work over the years! It works great and I'm proud to say that it can probably be considered one of the most popular third party Twitter apps.

While I will be the first to admit that it is very far from perfect - and a lot of the base code was written when I had no clue what I was doing - it it could be a very cool project to look at for inspiration, implementation details, and contributions.

Enjoy Talon for Twitter and let me know what you want to see next!

Building Talon

You should build the app against the current master branch. The tags are all old releases and are not maintained. I will not be able to support building older versions of the app.

Before Talon will work, you will need to generate some API keys, for Twitter. I will not be distributing my keys.

To get your Twitter API key, go through these steps:

  1. sign in on their developer site (https://apps.twitter.com/)
  2. Click Create New App.
  3. Choose a name, description, and website. These are all required and unique to your app, but it makes no difference what you call them. Anything will work here.
  4. For the callback URL, you can do anything you like, but to have it work out of the box, use: http://talonfortwitter.com
  • If you want a different one (stressing that it really DOES NOT matter..) then change it in the LoginFragment
  1. Read and accept their Rules of the Road, then Create your Twitter Application
  2. After it is created, you can change the icon and add some other info from the settings page.
  3. You NEED to go to the Permissions page of the app and select the Read, Write and Access direct messages option, or else you won't be able to do anything but view your timeline.
Adding API Keys to the App

In the .gitignore file, I have ignored secrets.properties which should contain your keys. Go ahead, copy the secrets.properties.sample to secrets.properties and fill in the keys in it.

This allows me to keep the keys out of source control, but still build the app without any hassle.

There are fields for the Twitter keys, as well as some third party services that Talon utilizes. You do not have to generate keys for the third party services. Those services just will not work.

Providing a Signing Configuration

For release builds, add your keystore simply as keystore to the root of the project, then add a keystore.properties file to the root with (no quotation marks around these strings!):

keystorefile=keystore
keyalias=XXXXXX
keystorepassword=XXXXXX
keypassword=XXXXXX

Contributing

Please fork this repository and contribute back using pull requests. Features can be requested using issues. All code, comments, and critiques are greatly appreciated.


License

Copyright 2018 Luke Klinker

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.

talon-for-twitter-android's People

Contributors

dcampogiani avatar elvisoliveira avatar iamvecr avatar kevcui avatar klinker24 avatar klinker41 avatar kofuk avatar mkody avatar zavierhenry 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

talon-for-twitter-android's Issues

Improve "New" activity

Right now, its hard to tell what is new and what has already been seen. Maybe we can add a bit of color to the new activity, until the user has seen it.

TweetMarker support in lists

Apply it to the lists that are on the timeline.

Could just piggyback off of the normal tweetmarker support and broadcast a completed status to update the lists as well after the tweetmarker finishes

Show article exerts on the timeline

Would have to start a service to download some of the articles. Wouldn't be difficult, but would take some changes to support it.

Todo:

  • add a service to download article exerts, runs after any refreshes (on the timeline or off the timeline)
  • handle lists, home timeline, mentions
  • add a column to those tables that will store an "exert_url"
  • make another table that is are "article_exerts". It will hold an article title and some words. No need to download entire articles
  • clicking the article from the timeline will be the same as clicking a link

Sync muted users with Twitter

Twitter now has support built in for syncing muted users.

Maybe we could push users up to start with, then pull them down in the future.

Blocked users list

Within talon, there is no way to see who you have blocked.

We could just add this to the overflow menu on their own profile. That would be a pretty simple way to implement it, then just pop open a bottom sheet with the list of users.

Add a swipable page for individual users

This page could just show that user's tweets, or it could also have a header view with information on that user.

To note: in settings, when it is being added, I will need to make a better auto complete for usernames.

Better UI for managing drafts

Right now, drafts can only be managed from the three dot overflow menu on the compose screen. The app just pops up a dialog to let you see all the drafts.

Perhaps add a drawer item for this instead, and be able to edit the drafts from there.

View other user's lists

There should be a button (or column) on user's profiles to display their public lists, this is available from Twitter's API I believe.

Instagram video support

This will mean running some kind of service after refreshing the data to check with Instagrams api as to whether or not they have videos.

Could do this after the web links things

Mute users for a time period

This is a pretty longstanding request...

It would require a new database table as well, and a service that runs to check whether or not the user should be unmuted. Similar to how the scheduled tweets service works

Peek into muffled tweets

This would be a very cool thing, in my opinion. All the information would be there, since we are already displaying everything in the timeline adapter.

Mute rules not applied to activity

This one may work a bit different, just because of how the activity section handles data. We should just be able to check if the text contains strings though.

Combined list pages

Would be nice, since talon has an awesome article viewer now, if we could combine lists into one aggregated page.

Shouldn't be too difficult, but refreshes will take a bit more time.

Compact layout without pictures

Under the "App Style" -> "Tweet Style" setting, it would be nice to give the users the option of doing the compact layout without pictures, since there is an option for this on the normal layout.

Refreshes with muted users at the top

Refreshing with a muted user at the top of the timeline causes it to be duplicated. Can see that duplication if the muted user is a favorite user

Search on a user's profile

Not sure what all this would entail. Searching through their mentions, tweets, and favorites I guess, but how far back should it look? Should we just grab the latest 200 of each of those categories?

Option to search the web when selecting text

When long clicking and selecting text on the tweet viewer, I would like to add a button to "Search Web" on the long click actions. I do not know how these are managed though, or what that menu is called.

Implement Twitter emojis

Twitter sometimes releases their own emojis that follow hashtags. Talon does not currently do any kind of additions for these.

Can't put text before reply handles

I strip out the reply handles to add the new metadata that Twitter provides, but if there is a "." or something before those names, then I shouldn't be stripping out that text.

Pretty much just need to check if "@" is the first character and then will be fine

Improve the look of multiple images

Right now, they are just overlayed over each other. I would like to put them in 4 separate frames or something, just to give them a bit of distinction.

Don't show a blank search page

When the user searches for something without results, we should add a TextView or something to the page so that we can get some feedback, instead of just having a blank page.

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.