GithubHelp home page GithubHelp logo

yaxim-org / yaxim Goto Github PK

View Code? Open in Web Editor NEW
484.0 60.0 238.0 16.25 MB

yaxim - a lean XMPP/Jabber client for Android

Home Page: https://yaxim.org

License: GNU General Public License v3.0

Shell 0.50% Java 99.07% Smarty 0.07% AIDL 0.36%

yaxim's Introduction

yaxim (Yet Another XMPP Instant Messenger)

yaxim is a lean Jabber/XMPP client for Android. It aims at usability, low overhead and security, and works on low-end Android devices starting with Android 4.0.

Check the yaxim homepage for latest news and downloads.

Features

  • Easy configuration and usability, using one XMPP account
  • Keeping your connection when the phone is started and on mobile/WiFi network changes
  • Chatting with friends and in group chats
  • Sending and receiving of text messages, images and files
  • Managing of your contact list
  • more...

Links

Build Instructions

yaxim is written in Java and source code is maintained in git. The official repository is yaxim-org, whereas experimental development work happens in ge0rg's repo. You will need Android Studio 3.x to compile the app.

To compile yaxim, the following steps need to be taken:

# fetch source code from github
git clone https://github.com/yaxim-org/yaxim.git
cd yaxim

# initialize submodules
git submodule init
git submodule update

# you can stop here, or go on to compile with gradle:

# compile and install debug version of yaxim or Bruno
gradle installYaximDebug
gradle installBrunoDebug

# compile release APKs for both
# create RELEASE_STORE_FILE according to http://stackoverflow.com/a/25391891/539443
gradle assembleRelease

License

MIT License

android-remote-stacktrace: Copyright (c) 2009 Mads Kristiansen, Nullwire ApS

MemorizingTrustManager: Copyright (c) 2010 Georg Lukas

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

yaxim's People

Contributors

caspermeijn avatar cpolzer avatar dicer avatar ge0rg avatar jan-kiszka avatar jfrederickson avatar licaon-kter avatar michaelkanis avatar mkhan07 avatar ndarilek avatar pfleidi avatar poussinou avatar subpub avatar sylviazhangyu avatar tretdm avatar ustyugov 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

yaxim's Issues

wrong status on reconnect

The client selects wrong status on reconnect.

Before the reconnect it was 'away', after: 'online'

Hide offline users option spontaneously turns off

The option to hide offline users spontaneously turns off on the Motorola Droid. This happens when, for example, the phone is turned from vertical to horizontal or vice versa, causing the screen to redraw in the new orientation. Also sometimes when foregrounding the application it comes up with offline users displayed even though they were hidden when the app was backgrounded.

Observed in v0.7.3.

automatic reconnect

yaxim often drops connection switching from wlan to 3g and vice versa or when wlan-connection is sloppy. user does not notice it, since there is no notification. so an automatic reconnection would be nice (if there is already something like that in yaxim it is not working here).

simple implementation: spinner in menu do activate automatic reconection with user definable retry-time (e.g. 5 minutes). if yaxim gets disconnected, it tries to reconnect and if it fails it tries again after waiting 5 minutes in a loop.

a bonus would be: if yaxim is in "reconnecting mode" (is disconnected and tries to reconnect each X minutes) a tray-notification is there, saying "yaxim is disconnected, reconnecting in X:XX" counting down until next try; if user clicks on it it tries to reconnect immediately.

and an extra bonus: when yaxim detects wlan/3g-switch/new ip/new wlan-connection while disconnected, it tries to reconnect at once.

show meaningful error messages

if a connect does not work / a disconnect happens, we should display a meaningful error message like "jid/password wrong", "no network connection" or whatever happened.

cannot return back to roster

Steps to reproduce:

  1. receive a message
  2. press 'Home'
  3. long-press 'Home' for list of working apps
  4. select 'yaxim'
  5. you get to the same contact that sent you the previous message
  6. press back
  7. instead of roster(which is expected, you get back to 'Home' screen)

The only way to get the roster is to select 'yaxim' icon, or select 'yaxim' from app list.

I'm not sure if this behaviour was actually expected.

huge font on Nexus One

I think that the roster font is rather big on my N1, but someone would think it's okay. Wouldn't it be possible to change font size in preferences?

Btw. Nice client :-)

yaxim force-closes if run without preferences

I just tried building and installing yaxim from head as of this morning. I wiped my phone recently, so there are no existing preferences.

When launched, yaxim immediately force-closes. Logcat reveals:

E/YaximConfiguration( 408): Exception in getPreferences(): org.yaxim.androidclient.exceptions.YaximXMPPAdressMalformedException: Configured Jabber-ID is incorrect!

I/MainWindow( 408): called showFirstStartUpDialogIfPrefsEmpty, string from pref was:

D/AndroidRuntime( 408): Shutting down VM

W/dalvikvm( 408): threadid=3: thread exiting with uncaught exception (group=0x4001e1c8)

E/AndroidRuntime( 408): Uncaught handler: thread main exiting due to uncaught exception

E/AndroidRuntime( 408): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.yaxim.androidclient/org.yaxim.androidclient.MainWindow}: java.lang.NullPointerException

E/AndroidRuntime( 408): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)

E/AndroidRuntime( 408): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)

E/AndroidRuntime( 408): at android.app.ActivityThread.access$2200(ActivityThread.java:119)

E/AndroidRuntime( 408): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)

E/AndroidRuntime( 408): at android.os.Handler.dispatchMessage(Handler.java:99)

E/AndroidRuntime( 408): at android.os.Looper.loop(Looper.java:123)

E/AndroidRuntime( 408): at android.app.ActivityThread.main(ActivityThread.java:4363)

E/AndroidRuntime( 408): at java.lang.reflect.Method.invokeNative(Native Method)

E/AndroidRuntime( 408): at java.lang.reflect.Method.invoke(Method.java:521)

E/AndroidRuntime( 408): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)

E/AndroidRuntime( 408): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

E/AndroidRuntime( 408): at dalvik.system.NativeStart.main(Native Method)

E/AndroidRuntime( 408): Caused by: java.lang.NullPointerException

E/AndroidRuntime( 408): at org.yaxim.androidclient.dialogs.FirstStartDialog.setEditJabberID(FirstStartDialog.java:49)

E/AndroidRuntime( 408): at org.yaxim.androidclient.dialogs.FirstStartDialog.onCreate(FirstStartDialog.java:41)

E/AndroidRuntime( 408): at android.app.Dialog.dispatchOnCreate(Dialog.java:308)

E/AndroidRuntime( 408): at android.app.Dialog.show(Dialog.java:225)

E/AndroidRuntime( 408): at org.yaxim.androidclient.MainWindow.showFirstStartUpDialog(MainWindow.java:693)

E/AndroidRuntime( 408): at org.yaxim.androidclient.MainWindow.showFirstStartUpDialogIfPrefsEmpty(MainWindow.java:688)

E/AndroidRuntime( 408): at org.yaxim.androidclient.MainWindow.onCreate(MainWindow.java:74)

E/AndroidRuntime( 408): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)

E/AndroidRuntime( 408): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)

E/AndroidRuntime( 408): ... 11 more

SSL encryption policy

Desktop XMPP clients often have an option how to deal w/ encryption: always and 'not necessary'. Could yaxim at least have a warning if the connection is not encrypted?

Certificate not recognized

When "yaxim" stumbles across an unknown certificate I can choose to always "remember" the certificate. However, next time I establish the connection "yaxim" has forgotten about the certificate and asks again.

This issue occurs at least in the cases where yaxim cannot check the whole certificate chain (e.g., because CAcert's class3 is included, but yaxim doesn't know the next cert in the chain) and in cases where the CN does not match.

I'm using the latest version available in Google's Android market.

Close connection on CONNECTIVITY_ACTION events

Version: 0.7.7
OS: 2.3.3 Cyanogenmod 7
Device: Nexus One
Reproducible: Always
Critical: no
Severeness: medium (in my opinion)
Steps to reproduce:

Leave area with wifi connection, move back to where you have wifi (leaving the house and coming back for instance), the connection will not automatically reconnect.

Leave area with wifi connection and data access turned on (3G), yaxim will not reconnect when 3G connection is established.

Remember server connection state

yaxim should remember if you were connected or disconnected the last time you used it, and use that instead of reconnecting whenever you open it.

account settings are applied only after manual restart

Account settings the user makes changes to does not apply instantly. They also are not taken into account if you manually disconnect/connect.

The only way make them work seems going to android's app management and stopping yaxim manually, then starting it from 'applications' menu.

OpenFire & ejabbered

There is error when connecting to OpenFire and ejabbered, even i configure all the setting correct.

01-19 08:34:26.818: ERROR/SmackableImp(215): tryToConnect(): org.yaxim.androidclient.exceptions.YaximXMPPException: SMACK connect failed without exception!
01-19 08:34:26.818: ERROR/SmackableImp(215): at org.yaxim.androidclient.service.SmackableImp.tryToConnect(SmackableImp.java:153)
01-19 08:34:26.818: ERROR/SmackableImp(215): at org.yaxim.androidclient.service.SmackableImp.doConnect(SmackableImp.java:80)
01-19 08:34:26.818: ERROR/SmackableImp(215): at org.yaxim.androidclient.service.XMPPService$3.run(XMPPService.java:257)
01-19 08:34:26.818: ERROR/Service(215): connectionFailed: SMACK connect failed without exception!

I've tested other tools connecting to my openfire n ejabbered with success.

Any idea whats set wrong?

Thanks

feature request: integration with contacts app

There's a 'Contacts' application in Android. Besides everything there, one could enter XMPP(it's called Jabber there) contact information there.

So integration of yaxim and contacts could be very handy.

Scrolling back through a long chat skips back to the bottom

On my Droid 2 Global, I have a long chat running, and if I try to scroll up through the chat history, I get part of the way up, but then the message view jumps back down to the bottom. This isn't because of a new message arriving, and it's not consistent where in the conversation I skip back to the bottom. In the IM client I used to use (Bee Jive), when a conversation history got long, the scroll would change to a grabable icon that would scroll up faster, that might help.

History saving

I would like to be able to save or export history of conversations some way.
If it's not easy to implement it in the app, could anybody give a me a hint to do it myself with a console for example? Where is the history saved? Which format does it have?

Thanks.

Wait/FC when connecting to an account with large roster

When connecting to an account with a large roster (tested with >300 contacts), Yaxim displays the Wait/Force Close dialog window. Even when waiting several times, the application does not become reactive.

The logcat displays the following:

12-10 22:23:40.154  8081  8081 I MainWindow: called createRoster()
12-10 22:23:40.324  8081  8081 D dalvikvm: GC freed 17600 objects / 583064 bytes in 130ms
12-10 22:23:40.594  8081  8173 I MainWindow: called rosterChanged()
12-10 22:23:40.624  8081  8173 I MainWindow: called rosterChanged()
12-10 22:23:40.644  8081  8173 I MainWindow: called rosterChanged()
...

From looking at the source, this seems to be a non-trivial function because it completely re-generates the roster view once for every contact, causing an overhead of O(N^2).

Clear IM history (RFE)

I'd be interested in an option to clear out a running conversation - I use Spectrum.im to get messages from Identi.ca and Twitter, and as it is, I have what appears to be a really long conversation running with those bots, and no (obvious) way to get rid of the chat. Not exactly a dup of Issue #38, so I started this new issue.

check for server connection

Just got into situation when yaxim looked like it was connected, but actually it seemed not to be. Yaxim resource was not listed on my PC. After switching on WiFi the client successfully detected new connection and reconnected back.

I'm sure if it is reproducible. Maybe there are some forms of ping-pong functionality in XMPP protocol like in IRC?

RFE: multiple accounts support

I'd like to propose multiple account support in Yaxim. That way it could be used to replace/consolidate other IM usage.

cannot change priority

Changing priority in the account settings gives nothing, resulting in client priority always being '0'.

feature request: optional support XEP-0118(user tune)

AFAIK there is no XMPP client for Android platform supporting this feature. So iplementing it Yaxim could benefit from that fact, provided that Android platform has player API.

Making this feature optional will help reduce bandwidth and battery usage.

conversation switching problem

Steps to reproduce:

  1. have one conversation opened(person 1)
  2. recieve(several?) messages from another person(person 2).
  3. expand notifications bar
  4. select new messages.
  5. you stay with person 1 conversation ← bug

This bug is reproducible, but not each time. Sometimes it switches, sometimes not. It could be bug of Android itself, I'm not sure.

Android version: 2.3.3 on Nexus One.

wrong keyboard type for typing message

AFAIK there are at least 3 types of keyboard in Andoid.

'standard' — the one with 'enter' key in the right corner.
'for addresses' — the one with 'at sign'(@) key in the left corner(e.g. it is being displayed when user prompted for JID in Yaxim)
'for messages' — the one with 'smiles' key in the right corner( :-) )

In my humble opinion, wrong keyboard is being displayed when typing message: the 'standard' one. I think 'for messages' should be used instead.

P.S. I don't know the real names of keyboards in Android.

SSL support

This is really needed for some degree of secure communication (before otr-implemention).

remember last status message when setting new

Currently every time you want to set your new status or status message the fiend for the message will always be filled with 'This is Yaxims default statusmessage!' so every time you have to clear it and set with the old one(if you only need to change your status). This is what normally expected from Yaxim. At least it would be convenient if the field would be empty.

No audio alert on Motorola Droid

No audio alert occurs when a message is received on Motorola Droid. This happens regardless of the Ringtone Preferences setting. LED and vibrating alert both work, however.

This was observed in v0.7.3.

Feature request: Show number of online/total contacts for groups

I have some 80 contacts in my roster and have them organized in groups. For better seeing in which groups somebody is online, I normally have the groups collapsed. In this case it would be great to see the number of online/total contacts after the group name.

build.xml incompatible with current SDK tools

When trying to build yaxim with the current SDK tools (Android SDK Tools Revision 12, updated the project with android update project -p . -t android-10), ant aborts with the following error message:

BUILD FAILED
/home/johannes/coding/android/yaxim/build.xml:49: taskdef class com.android.ant.SetupTask cannot be found
 using the classloader AntClassLoader[]

It works after adding the sdk-location property to local.properties, but I think the real fix would be replacing sdk-location with sdk.dir in build.xml? Or is this incompatibility deliberate?

Messages that cannot be delivered are "echoed back"

When sending a message to a Google Talk user who is offline and for whom offline messages aren't stored (chat history disabled in google preferences), the message is echoed back instead of displaying an error message.

Example:
Me: Hello!
Offline User: Hello!

feature request: support XEP-0146(client remote control)

XEP-0146 is about controlling other instances of user clients connected to the same account. Implementing it it in Yaxim could be rather useful because there are many users connected to XMPP from different places simultaneously, e.g. from oridnary PC, from laptop, from work and from mobile phone.

In Yaxim's situation it happens particularly often when it disconnects from XMPP network becaus of GSM network failures.

Example:
You chat w/ someone, network fails for some reason. Your buddy's messages are not lost, they just go to some other resource, for example home or laptop or smth else. When Yaxim connects back you ether don't know if user had sent you something or he continues the conversation from some other place.

So it would be neat!..

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.