mirror of
https://github.com/deltachat/deltachat-android.git
synced 2025-10-03 09:49:21 +02:00
make DcContext static
This commit is contained in:
parent
54aa11b964
commit
b4bc628f17
8 changed files with 243 additions and 326 deletions
317
jni/dc_wrapper.c
317
jni/dc_wrapper.c
|
@ -1,6 +1,6 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* Delta Chat Android
|
* Delta Chat Java Adapter
|
||||||
* (C) 2017 Björn Petersen
|
* (C) 2017 Björn Petersen
|
||||||
* Contact: r10s@b44t.com, http://b44t.com
|
* Contact: r10s@b44t.com, http://b44t.com
|
||||||
*
|
*
|
||||||
|
@ -24,7 +24,6 @@
|
||||||
|
|
||||||
|
|
||||||
#include <jni.h>
|
#include <jni.h>
|
||||||
#include <android/log.h>
|
|
||||||
#include "messenger-backend/src/deltachat.h"
|
#include "messenger-backend/src/deltachat.h"
|
||||||
#include "messenger-backend/cmdline/cmdline.h"
|
#include "messenger-backend/cmdline/cmdline.h"
|
||||||
|
|
||||||
|
@ -80,11 +79,9 @@ static void s_init_globals(JNIEnv *env, jclass DcContext_class)
|
||||||
s_global_init_done = 1;
|
s_global_init_done = 1;
|
||||||
|
|
||||||
/* prepare calling back a Java function */
|
/* prepare calling back a Java function */
|
||||||
__android_log_print(ANDROID_LOG_INFO, "DeltaChat", "JNI: s_init_globals()..."); /* low-level logging, dc_log_*() may not be yet available. However, please note that __android_log_print() may not work (eg. on LG X Cam) */
|
|
||||||
|
|
||||||
(*env)->GetJavaVM(env, &s_jvm); /* JNIEnv cannot be shared between threads, so we share the JavaVM object */
|
(*env)->GetJavaVM(env, &s_jvm); /* JNIEnv cannot be shared between threads, so we share the JavaVM object */
|
||||||
s_DcContext_class = (*env)->NewGlobalRef(env, DcContext_class);
|
s_DcContext_class = (*env)->NewGlobalRef(env, DcContext_class);
|
||||||
s_DcCallback_methodID = (*env)->GetStaticMethodID(env, DcContext_class, "DcCallback","(IJJ)J" /*signature as "(param)ret" with I=int, J=long*/ );
|
s_DcCallback_methodID = (*env)->GetStaticMethodID(env, DcContext_class, "handleEvent","(IJJ)J" /*signature as "(param)ret" with I=int, J=long*/ );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -155,14 +152,15 @@ static uint32_t* jintArray2uint32Pointer(JNIEnv* env, jintArray ja, int* ret_icn
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
static dc_context_t* get_dc_context(JNIEnv *env, jclass cls)
|
static dc_context_t* get_dc_context(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
static jfieldID fid = 0;
|
static jfieldID fid = 0;
|
||||||
if( fid == 0 ) {
|
if( fid == 0 ) {
|
||||||
fid = (*env)->GetStaticFieldID(env, cls, "m_hContext", "J" /*Signature, J=long*/);
|
jclass cls = (*env)->GetObjectClass(env, obj);
|
||||||
|
fid = (*env)->GetFieldID(env, cls, "m_hContext", "J" /*Signature, J=long*/);
|
||||||
}
|
}
|
||||||
if( fid ) {
|
if( fid ) {
|
||||||
return (dc_context_t*)(*env)->GetStaticLongField(env, cls, fid);
|
return (dc_chat_t*)(*env)->GetLongField(env, obj, fid);
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -175,17 +173,6 @@ static uintptr_t s_context_callback_(dc_context_t* context, int event, uintptr_t
|
||||||
jlong l;
|
jlong l;
|
||||||
JNIEnv* env;
|
JNIEnv* env;
|
||||||
|
|
||||||
#if 0 /* -- __android_log_print() does not log eg. on LG X Cam - but Javas Log.i() etc. do. So, we do not optimize these calls and just use the Java logging. */
|
|
||||||
if( event==DC_EVENT_INFO || event==DC_EVENT_WARNING ) {
|
|
||||||
__android_log_print(event==DC_EVENT_INFO? ANDROID_LOG_INFO : ANDROID_LOG_WARN, "DeltaChat", "%s", (char*)data2); /* on problems, add `-llog` to `Android.mk` */
|
|
||||||
return 0; /* speed up things for info/warning */
|
|
||||||
}
|
|
||||||
else if( event == DC_EVENT_ERROR ) {
|
|
||||||
__android_log_print(ANDROID_LOG_ERROR, "DeltaChat", "%s", (char*)data2);
|
|
||||||
/* errors are also forwarded to Java to show them in a bubble or so */
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if( s_jvm==NULL || s_DcContext_class==NULL || s_DcCallback_methodID==NULL ) {
|
if( s_jvm==NULL || s_DcContext_class==NULL || s_DcCallback_methodID==NULL ) {
|
||||||
return 0; /* may happen on startup */
|
return 0; /* may happen on startup */
|
||||||
}
|
}
|
||||||
|
@ -200,155 +187,159 @@ static uintptr_t s_context_callback_(dc_context_t* context, int event, uintptr_t
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jlong Java_com_b44t_messenger_DcContext_DcContextNew(JNIEnv *env, jclass c)
|
JNIEXPORT jlong Java_com_b44t_messenger_DcContext_DcContextNew(JNIEnv *env, jobject obj, jstring osname)
|
||||||
{
|
{
|
||||||
s_init_globals(env, c);
|
jclass cls = (*env)->GetObjectClass(env, obj);
|
||||||
return (jlong)dc_context_new(s_context_callback_, NULL, "Android");
|
s_init_globals(env, cls);
|
||||||
|
CHAR_REF(osname);
|
||||||
|
jlong hContext = (jlong)dc_context_new(s_context_callback_, NULL, osnamePtr);
|
||||||
|
CHAR_UNREF(osname);
|
||||||
|
return hContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* DcContext - open/configure/connect/fetch */
|
/* DcContext - open/configure/connect/fetch */
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_open(JNIEnv *env, jclass cls, jstring dbfile)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_open(JNIEnv *env, jobject obj, jstring dbfile)
|
||||||
{
|
{
|
||||||
CHAR_REF(dbfile);
|
CHAR_REF(dbfile);
|
||||||
jint ret = dc_open(get_dc_context(env, cls), dbfilePtr, NULL);
|
jint ret = dc_open(get_dc_context(env, obj), dbfilePtr, NULL);
|
||||||
CHAR_UNREF(dbfile)
|
CHAR_UNREF(dbfile)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_close(JNIEnv *env, jclass cls)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_close(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
dc_close(get_dc_context(env, cls));
|
dc_close(get_dc_context(env, obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_getBlobdir(JNIEnv *env, jclass cls)
|
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_getBlobdir(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
char* temp = dc_get_blobdir(get_dc_context(env, cls));
|
char* temp = dc_get_blobdir(get_dc_context(env, obj));
|
||||||
jstring ret = JSTRING_NEW(temp);
|
jstring ret = JSTRING_NEW(temp);
|
||||||
free(temp);
|
free(temp);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_configure(JNIEnv *env, jclass cls)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_configure(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
dc_configure(get_dc_context(env, cls));
|
dc_configure(get_dc_context(env, obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_stopOngoingProcess(JNIEnv *env, jclass cls)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_stopOngoingProcess(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
dc_stop_ongoing_process(get_dc_context(env, cls));
|
dc_stop_ongoing_process(get_dc_context(env, obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_isConfigured(JNIEnv *env, jclass cls)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_isConfigured(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
return (jint)dc_is_configured(get_dc_context(env, cls));
|
return (jint)dc_is_configured(get_dc_context(env, obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_performJobs(JNIEnv *env, jclass cls)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_performJobs(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
dc_perform_imap_jobs(get_dc_context(env, cls));
|
dc_perform_imap_jobs(get_dc_context(env, obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_idle(JNIEnv *env, jclass cls)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_idle(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
dc_perform_imap_idle(get_dc_context(env, cls));
|
dc_perform_imap_idle(get_dc_context(env, obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_interruptIdle(JNIEnv *env, jclass cls)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_interruptIdle(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
dc_interrupt_imap_idle(get_dc_context(env, cls));
|
dc_interrupt_imap_idle(get_dc_context(env, obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_fetch(JNIEnv *env, jclass cls)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_fetch(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
dc_perform_imap_fetch(get_dc_context(env, cls));
|
dc_perform_imap_fetch(get_dc_context(env, obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_performSmtpJobs(JNIEnv *env, jclass cls)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_performSmtpJobs(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
dc_perform_smtp_jobs(get_dc_context(env, cls));
|
dc_perform_smtp_jobs(get_dc_context(env, obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_performSmtpIdle(JNIEnv *env, jclass cls)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_performSmtpIdle(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
dc_perform_smtp_idle(get_dc_context(env, cls));
|
dc_perform_smtp_idle(get_dc_context(env, obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_interruptSmtpIdle(JNIEnv *env, jclass cls)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_interruptSmtpIdle(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
dc_interrupt_smtp_idle(get_dc_context(env, cls));
|
dc_interrupt_smtp_idle(get_dc_context(env, obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* DcContext - handle contacts */
|
/* DcContext - handle contacts */
|
||||||
|
|
||||||
JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_getContacts(JNIEnv *env, jclass cls, jint flags, jstring query)
|
JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_getContacts(JNIEnv *env, jobject obj, jint flags, jstring query)
|
||||||
{
|
{
|
||||||
CHAR_REF(query);
|
CHAR_REF(query);
|
||||||
dc_array_t* ca = dc_get_contacts(get_dc_context(env, cls), flags, queryPtr);
|
dc_array_t* ca = dc_get_contacts(get_dc_context(env, obj), flags, queryPtr);
|
||||||
CHAR_UNREF(query);
|
CHAR_UNREF(query);
|
||||||
return dc_array2jintArray_n_unref(env, ca);
|
return dc_array2jintArray_n_unref(env, ca);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_getBlockedCount(JNIEnv *env, jclass cls)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_getBlockedCount(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
return dc_get_blocked_cnt(get_dc_context(env, cls));
|
return dc_get_blocked_cnt(get_dc_context(env, obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_getBlockedContacts(JNIEnv *env, jclass cls)
|
JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_getBlockedContacts(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
dc_array_t* ca = dc_get_blocked_contacts(get_dc_context(env, cls));
|
dc_array_t* ca = dc_get_blocked_contacts(get_dc_context(env, obj));
|
||||||
return dc_array2jintArray_n_unref(env, ca);
|
return dc_array2jintArray_n_unref(env, ca);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jlong Java_com_b44t_messenger_DcContext_DcContextGetContact(JNIEnv *env, jclass c, jlong hContext, jint contact_id)
|
JNIEXPORT jlong Java_com_b44t_messenger_DcContext_DcContextGetContact(JNIEnv *env, jclass cls, jlong hContext, jint contact_id)
|
||||||
{
|
{
|
||||||
return (jlong)dc_get_contact((dc_context_t*)hContext, contact_id);
|
return (jlong)dc_get_contact((dc_context_t*)hContext, contact_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_createContact(JNIEnv *env, jclass cls, jstring name, jstring addr)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_createContact(JNIEnv *env, jobject obj, jstring name, jstring addr)
|
||||||
{
|
{
|
||||||
CHAR_REF(name);
|
CHAR_REF(name);
|
||||||
CHAR_REF(addr);
|
CHAR_REF(addr);
|
||||||
jint ret = (jint)dc_create_contact(get_dc_context(env, cls), namePtr, addrPtr);
|
jint ret = (jint)dc_create_contact(get_dc_context(env, obj), namePtr, addrPtr);
|
||||||
CHAR_UNREF(addr);
|
CHAR_UNREF(addr);
|
||||||
CHAR_UNREF(name);
|
CHAR_UNREF(name);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_blockContact(JNIEnv *env, jclass cls, jint contact_id, jint block)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_blockContact(JNIEnv *env, jobject obj, jint contact_id, jint block)
|
||||||
{
|
{
|
||||||
dc_block_contact(get_dc_context(env, cls), contact_id, block);
|
dc_block_contact(get_dc_context(env, obj), contact_id, block);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_deleteContact(JNIEnv *env, jclass cls, jint contact_id)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_deleteContact(JNIEnv *env, jobject obj, jint contact_id)
|
||||||
{
|
{
|
||||||
return (jint)dc_delete_contact(get_dc_context(env, cls), contact_id);
|
return (jint)dc_delete_contact(get_dc_context(env, obj), contact_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* DcContext - handle chats */
|
/* DcContext - handle chats */
|
||||||
|
|
||||||
JNIEXPORT jlong Java_com_b44t_messenger_DcContext_DcContextGetChatlist(JNIEnv *env, jclass c, jlong hContext, jint listflags, jstring query, jint queryId)
|
JNIEXPORT jlong Java_com_b44t_messenger_DcContext_DcContextGetChatlist(JNIEnv *env, jclass cls, jlong hContext, jint listflags, jstring query, jint queryId)
|
||||||
{
|
{
|
||||||
jlong ret;
|
jlong ret;
|
||||||
if( query ) {
|
if( query ) {
|
||||||
|
@ -363,162 +354,162 @@ JNIEXPORT jlong Java_com_b44t_messenger_DcContext_DcContextGetChatlist(JNIEnv *e
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jlong Java_com_b44t_messenger_DcContext_DcContextGetChat(JNIEnv *env, jclass c, jlong hContext, jint chat_id)
|
JNIEXPORT jlong Java_com_b44t_messenger_DcContext_DcContextGetChat(JNIEnv *env, jclass cls, jlong hContext, jint chat_id)
|
||||||
{
|
{
|
||||||
return (jlong)dc_get_chat((dc_context_t*)hContext, chat_id);
|
return (jlong)dc_get_chat((dc_context_t*)hContext, chat_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_getChatIdByContactId(JNIEnv *env, jclass cls, jint contact_id)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_getChatIdByContactId(JNIEnv *env, jobject obj, jint contact_id)
|
||||||
{
|
{
|
||||||
return (jint)dc_get_chat_id_by_contact_id(get_dc_context(env, cls), contact_id);
|
return (jint)dc_get_chat_id_by_contact_id(get_dc_context(env, obj), contact_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_markseenMsgs(JNIEnv *env, jclass cls, jintArray msg_ids)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_markseenMsgs(JNIEnv *env, jobject obj, jintArray msg_ids)
|
||||||
{
|
{
|
||||||
int msg_ids_cnt = 0;
|
int msg_ids_cnt = 0;
|
||||||
const uint32_t* msg_ids_ptr = jintArray2uint32Pointer(env, msg_ids, &msg_ids_cnt);
|
const uint32_t* msg_ids_ptr = jintArray2uint32Pointer(env, msg_ids, &msg_ids_cnt);
|
||||||
dc_markseen_msgs(get_dc_context(env, cls), msg_ids_ptr, msg_ids_cnt);
|
dc_markseen_msgs(get_dc_context(env, obj), msg_ids_ptr, msg_ids_cnt);
|
||||||
free(msg_ids_ptr);
|
free(msg_ids_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_marknoticedChat(JNIEnv *env, jclass cls, jint chat_id)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_marknoticedChat(JNIEnv *env, jobject obj, jint chat_id)
|
||||||
{
|
{
|
||||||
dc_marknoticed_chat(get_dc_context(env, cls), chat_id);
|
dc_marknoticed_chat(get_dc_context(env, obj), chat_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_marknoticedContact(JNIEnv *env, jclass cls, jint contact_id)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_marknoticedContact(JNIEnv *env, jobject obj, jint contact_id)
|
||||||
{
|
{
|
||||||
dc_marknoticed_contact(get_dc_context(env, cls), contact_id);
|
dc_marknoticed_contact(get_dc_context(env, obj), contact_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_archiveChat(JNIEnv *env, jclass cls, jint chat_id, jint archive)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_archiveChat(JNIEnv *env, jobject obj, jint chat_id, jint archive)
|
||||||
{
|
{
|
||||||
dc_archive_chat(get_dc_context(env, cls), chat_id, archive);
|
dc_archive_chat(get_dc_context(env, obj), chat_id, archive);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_createChatByContactId(JNIEnv *env, jclass cls, jint contact_id)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_createChatByContactId(JNIEnv *env, jobject obj, jint contact_id)
|
||||||
{
|
{
|
||||||
return (jint)dc_create_chat_by_contact_id(get_dc_context(env, cls), contact_id);
|
return (jint)dc_create_chat_by_contact_id(get_dc_context(env, obj), contact_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_createChatByMsgId(JNIEnv *env, jclass cls, jint msg_id)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_createChatByMsgId(JNIEnv *env, jobject obj, jint msg_id)
|
||||||
{
|
{
|
||||||
return (jint)dc_create_chat_by_msg_id(get_dc_context(env, cls), msg_id);
|
return (jint)dc_create_chat_by_msg_id(get_dc_context(env, obj), msg_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_createGroupChat(JNIEnv *env, jclass cls, jboolean verified, jstring name)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_createGroupChat(JNIEnv *env, jobject obj, jboolean verified, jstring name)
|
||||||
{
|
{
|
||||||
CHAR_REF(name);
|
CHAR_REF(name);
|
||||||
jint ret = (jint)dc_create_group_chat(get_dc_context(env, cls), verified, namePtr);
|
jint ret = (jint)dc_create_group_chat(get_dc_context(env, obj), verified, namePtr);
|
||||||
CHAR_UNREF(name);
|
CHAR_UNREF(name);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_isContactInChat(JNIEnv *env, jclass cls, jint chat_id, jint contact_id)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_isContactInChat(JNIEnv *env, jobject obj, jint chat_id, jint contact_id)
|
||||||
{
|
{
|
||||||
return (jint)dc_is_contact_in_chat(get_dc_context(env, cls), chat_id, contact_id);
|
return (jint)dc_is_contact_in_chat(get_dc_context(env, obj), chat_id, contact_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_addContactToChat(JNIEnv *env, jclass cls, jint chat_id, jint contact_id)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_addContactToChat(JNIEnv *env, jobject obj, jint chat_id, jint contact_id)
|
||||||
{
|
{
|
||||||
return (jint)dc_add_contact_to_chat(get_dc_context(env, cls), chat_id, contact_id);
|
return (jint)dc_add_contact_to_chat(get_dc_context(env, obj), chat_id, contact_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_removeContactFromChat(JNIEnv *env, jclass cls, jint chat_id, jint contact_id)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_removeContactFromChat(JNIEnv *env, jobject obj, jint chat_id, jint contact_id)
|
||||||
{
|
{
|
||||||
return (jint)dc_remove_contact_from_chat(get_dc_context(env, cls), chat_id, contact_id);
|
return (jint)dc_remove_contact_from_chat(get_dc_context(env, obj), chat_id, contact_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_setDraft(JNIEnv *env, jclass cls, jint chat_id, jstring draft /* NULL=delete */)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_setDraft(JNIEnv *env, jobject obj, jint chat_id, jstring draft /* NULL=delete */)
|
||||||
{
|
{
|
||||||
CHAR_REF(draft);
|
CHAR_REF(draft);
|
||||||
dc_set_text_draft(get_dc_context(env, cls), chat_id, draftPtr /* NULL=delete */);
|
dc_set_text_draft(get_dc_context(env, obj), chat_id, draftPtr /* NULL=delete */);
|
||||||
CHAR_UNREF(draft);
|
CHAR_UNREF(draft);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_setChatName(JNIEnv *env, jclass cls, jint chat_id, jstring name)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_setChatName(JNIEnv *env, jobject obj, jint chat_id, jstring name)
|
||||||
{
|
{
|
||||||
CHAR_REF(name);
|
CHAR_REF(name);
|
||||||
jint ret = (jint)dc_set_chat_name(get_dc_context(env, cls), chat_id, namePtr);
|
jint ret = (jint)dc_set_chat_name(get_dc_context(env, obj), chat_id, namePtr);
|
||||||
CHAR_UNREF(name);
|
CHAR_UNREF(name);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_setChatProfileImage(JNIEnv *env, jclass cls, jint chat_id, jstring image/*NULL=delete*/)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_setChatProfileImage(JNIEnv *env, jobject obj, jint chat_id, jstring image/*NULL=delete*/)
|
||||||
{
|
{
|
||||||
CHAR_REF(image);
|
CHAR_REF(image);
|
||||||
jint ret = (jint)dc_set_chat_profile_image(get_dc_context(env, cls), chat_id, imagePtr/*CHAR_REF() preserves NULL*/);
|
jint ret = (jint)dc_set_chat_profile_image(get_dc_context(env, obj), chat_id, imagePtr/*CHAR_REF() preserves NULL*/);
|
||||||
CHAR_UNREF(image);
|
CHAR_UNREF(image);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_deleteChat(JNIEnv *env, jclass cls, jint chat_id)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_deleteChat(JNIEnv *env, jobject obj, jint chat_id)
|
||||||
{
|
{
|
||||||
dc_delete_chat(get_dc_context(env, cls), chat_id);
|
dc_delete_chat(get_dc_context(env, obj), chat_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* DcContext - handle messages */
|
/* DcContext - handle messages */
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_getFreshMsgCount(JNIEnv *env, jclass cls, jint chat_id)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_getFreshMsgCount(JNIEnv *env, jobject obj, jint chat_id)
|
||||||
{
|
{
|
||||||
return dc_get_fresh_msg_cnt(get_dc_context(env, cls), chat_id);
|
return dc_get_fresh_msg_cnt(get_dc_context(env, obj), chat_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jlong Java_com_b44t_messenger_DcContext_DcContextGetMsg(JNIEnv *env, jclass c, jlong hContext, jint id)
|
JNIEXPORT jlong Java_com_b44t_messenger_DcContext_DcContextGetMsg(JNIEnv *env, jobject obj, jlong hContext, jint id)
|
||||||
{
|
{
|
||||||
return (jlong)dc_get_msg((dc_context_t*)hContext, id);
|
return (jlong)dc_get_msg((dc_context_t*)hContext, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_getMsgInfo(JNIEnv *env, jclass cls, jint msg_id)
|
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_getMsgInfo(JNIEnv *env, jobject obj, jint msg_id)
|
||||||
{
|
{
|
||||||
char* temp = dc_get_msg_info(get_dc_context(env, cls), msg_id);
|
char* temp = dc_get_msg_info(get_dc_context(env, obj), msg_id);
|
||||||
jstring ret = JSTRING_NEW(temp);
|
jstring ret = JSTRING_NEW(temp);
|
||||||
free(temp);
|
free(temp);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_deleteMsgs(JNIEnv *env, jclass cls, jintArray msg_ids)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_deleteMsgs(JNIEnv *env, jobject obj, jintArray msg_ids)
|
||||||
{
|
{
|
||||||
int msg_ids_cnt = 0;
|
int msg_ids_cnt = 0;
|
||||||
const uint32_t* msg_ids_ptr = jintArray2uint32Pointer(env, msg_ids, &msg_ids_cnt);
|
const uint32_t* msg_ids_ptr = jintArray2uint32Pointer(env, msg_ids, &msg_ids_cnt);
|
||||||
dc_delete_msgs(get_dc_context(env, cls), msg_ids_ptr, msg_ids_cnt);
|
dc_delete_msgs(get_dc_context(env, obj), msg_ids_ptr, msg_ids_cnt);
|
||||||
free(msg_ids_ptr);
|
free(msg_ids_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_forwardMsgs(JNIEnv *env, jclass cls, jintArray msg_ids, jint chat_id)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_forwardMsgs(JNIEnv *env, jobject obj, jintArray msg_ids, jint chat_id)
|
||||||
{
|
{
|
||||||
int msg_ids_cnt = 0;
|
int msg_ids_cnt = 0;
|
||||||
const uint32_t* msg_ids_ptr = jintArray2uint32Pointer(env, msg_ids, &msg_ids_cnt);
|
const uint32_t* msg_ids_ptr = jintArray2uint32Pointer(env, msg_ids, &msg_ids_cnt);
|
||||||
dc_forward_msgs(get_dc_context(env, cls), msg_ids_ptr, msg_ids_cnt, chat_id);
|
dc_forward_msgs(get_dc_context(env, obj), msg_ids_ptr, msg_ids_cnt, chat_id);
|
||||||
free(msg_ids_ptr);
|
free(msg_ids_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_sendTextMsg(JNIEnv *env, jclass cls, jint chat_id, jstring text)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_sendTextMsg(JNIEnv *env, jobject obj, jint chat_id, jstring text)
|
||||||
{
|
{
|
||||||
CHAR_REF(text);
|
CHAR_REF(text);
|
||||||
jint msg_id = dc_send_text_msg(get_dc_context(env, cls), chat_id, textPtr);
|
jint msg_id = dc_send_text_msg(get_dc_context(env, obj), chat_id, textPtr);
|
||||||
CHAR_UNREF(text);
|
CHAR_UNREF(text);
|
||||||
return msg_id;
|
return msg_id;
|
||||||
}
|
}
|
||||||
|
@ -530,7 +521,7 @@ JNIEXPORT jint Java_com_b44t_messenger_DcContext_sendVcardMsg(JNIEnv *env, jobje
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_sendMediaMsg(JNIEnv *env, jclass cls, jint chat_id, jint type, jstring file, jstring mime, jint w, jint h, jint ms, jstring author, jstring trackname)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_sendMediaMsg(JNIEnv *env, jobject obj, jint chat_id, jint type, jstring file, jstring mime, jint w, jint h, jint ms, jstring author, jstring trackname)
|
||||||
{
|
{
|
||||||
jint msg_id = 0;
|
jint msg_id = 0;
|
||||||
CHAR_REF(file);
|
CHAR_REF(file);
|
||||||
|
@ -538,11 +529,11 @@ JNIEXPORT jint Java_com_b44t_messenger_DcContext_sendMediaMsg(JNIEnv *env, jclas
|
||||||
CHAR_REF(author);
|
CHAR_REF(author);
|
||||||
CHAR_REF(trackname);
|
CHAR_REF(trackname);
|
||||||
switch( type ) {
|
switch( type ) {
|
||||||
case DC_MSG_IMAGE: msg_id = (jint)dc_send_image_msg(get_dc_context(env, cls), chat_id, filePtr, mimePtr, w, h); break;
|
case DC_MSG_IMAGE: msg_id = (jint)dc_send_image_msg(get_dc_context(env, obj), chat_id, filePtr, mimePtr, w, h); break;
|
||||||
case DC_MSG_VIDEO: msg_id = (jint)dc_send_video_msg(get_dc_context(env, cls), chat_id, filePtr, mimePtr, w, h, ms); break;
|
case DC_MSG_VIDEO: msg_id = (jint)dc_send_video_msg(get_dc_context(env, obj), chat_id, filePtr, mimePtr, w, h, ms); break;
|
||||||
case DC_MSG_VOICE: msg_id = (jint)dc_send_voice_msg(get_dc_context(env, cls), chat_id, filePtr, mimePtr, ms); break;
|
case DC_MSG_VOICE: msg_id = (jint)dc_send_voice_msg(get_dc_context(env, obj), chat_id, filePtr, mimePtr, ms); break;
|
||||||
case DC_MSG_AUDIO: msg_id = (jint)dc_send_audio_msg(get_dc_context(env, cls), chat_id, filePtr, mimePtr, ms, authorPtr, tracknamePtr); break;
|
case DC_MSG_AUDIO: msg_id = (jint)dc_send_audio_msg(get_dc_context(env, obj), chat_id, filePtr, mimePtr, ms, authorPtr, tracknamePtr); break;
|
||||||
default: msg_id = (jint)dc_send_file_msg (get_dc_context(env, cls), chat_id, filePtr, mimePtr); break;
|
default: msg_id = (jint)dc_send_file_msg (get_dc_context(env, obj), chat_id, filePtr, mimePtr); break;
|
||||||
}
|
}
|
||||||
CHAR_UNREF(trackname);
|
CHAR_UNREF(trackname);
|
||||||
CHAR_UNREF(author);
|
CHAR_UNREF(author);
|
||||||
|
@ -554,29 +545,29 @@ JNIEXPORT jint Java_com_b44t_messenger_DcContext_sendMediaMsg(JNIEnv *env, jclas
|
||||||
|
|
||||||
/* DcContext - handle config */
|
/* DcContext - handle config */
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_setConfig(JNIEnv *env, jclass cls, jstring key, jstring value /*may be NULL*/)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_setConfig(JNIEnv *env, jobject obj, jstring key, jstring value /*may be NULL*/)
|
||||||
{
|
{
|
||||||
CHAR_REF(key);
|
CHAR_REF(key);
|
||||||
CHAR_REF(value);
|
CHAR_REF(value);
|
||||||
dc_set_config(get_dc_context(env, cls), keyPtr, valuePtr /*is NULL if value is NULL, CHAR_REF() handles this*/);
|
dc_set_config(get_dc_context(env, obj), keyPtr, valuePtr /*is NULL if value is NULL, CHAR_REF() handles this*/);
|
||||||
CHAR_UNREF(key);
|
CHAR_UNREF(key);
|
||||||
CHAR_UNREF(value);
|
CHAR_UNREF(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_setConfigInt(JNIEnv *env, jclass cls, jstring key, jint value)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_setConfigInt(JNIEnv *env, jobject obj, jstring key, jint value)
|
||||||
{
|
{
|
||||||
CHAR_REF(key);
|
CHAR_REF(key);
|
||||||
dc_set_config_int(get_dc_context(env, cls), keyPtr, value);
|
dc_set_config_int(get_dc_context(env, obj), keyPtr, value);
|
||||||
CHAR_UNREF(key);
|
CHAR_UNREF(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_getConfig(JNIEnv *env, jclass cls, jstring key, jstring def/*may be NULL*/)
|
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_getConfig(JNIEnv *env, jobject obj, jstring key, jstring def/*may be NULL*/)
|
||||||
{
|
{
|
||||||
CHAR_REF(key);
|
CHAR_REF(key);
|
||||||
CHAR_REF(def);
|
CHAR_REF(def);
|
||||||
char* temp = dc_get_config(get_dc_context(env, cls), keyPtr, defPtr /*is NULL if value is NULL, CHAR_REF() handles this*/);
|
char* temp = dc_get_config(get_dc_context(env, obj), keyPtr, defPtr /*is NULL if value is NULL, CHAR_REF() handles this*/);
|
||||||
jstring ret = NULL;
|
jstring ret = NULL;
|
||||||
if( temp ) {
|
if( temp ) {
|
||||||
ret = JSTRING_NEW(temp);
|
ret = JSTRING_NEW(temp);
|
||||||
|
@ -588,10 +579,10 @@ JNIEXPORT jstring Java_com_b44t_messenger_DcContext_getConfig(JNIEnv *env, jclas
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_getConfigInt(JNIEnv *env, jclass cls, jstring key, jint def)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_getConfigInt(JNIEnv *env, jobject obj, jstring key, jint def)
|
||||||
{
|
{
|
||||||
CHAR_REF(key);
|
CHAR_REF(key);
|
||||||
jint ret = dc_get_config_int(get_dc_context(env, cls), keyPtr, def);
|
jint ret = dc_get_config_int(get_dc_context(env, obj), keyPtr, def);
|
||||||
CHAR_UNREF(key);
|
CHAR_UNREF(key);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -599,26 +590,26 @@ JNIEXPORT jint Java_com_b44t_messenger_DcContext_getConfigInt(JNIEnv *env, jclas
|
||||||
|
|
||||||
/* DcContext - out-of-band verification */
|
/* DcContext - out-of-band verification */
|
||||||
|
|
||||||
JNIEXPORT jlong Java_com_b44t_messenger_DcContext_checkQrCPtr(JNIEnv *env, jclass cls, jstring qr)
|
JNIEXPORT jlong Java_com_b44t_messenger_DcContext_checkQrCPtr(JNIEnv *env, jobject obj, jstring qr)
|
||||||
{
|
{
|
||||||
CHAR_REF(qr);
|
CHAR_REF(qr);
|
||||||
jlong ret = (jlong)dc_check_qr(get_dc_context(env, cls), qrPtr);
|
jlong ret = (jlong)dc_check_qr(get_dc_context(env, obj), qrPtr);
|
||||||
CHAR_UNREF(qr);
|
CHAR_UNREF(qr);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_getSecurejoinQr(JNIEnv *env, jclass cls, jint chat_id)
|
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_getSecurejoinQr(JNIEnv *env, jobject obj, jint chat_id)
|
||||||
{
|
{
|
||||||
char* temp = dc_get_securejoin_qr(get_dc_context(env, cls), chat_id);
|
char* temp = dc_get_securejoin_qr(get_dc_context(env, obj), chat_id);
|
||||||
jstring ret = JSTRING_NEW(temp);
|
jstring ret = JSTRING_NEW(temp);
|
||||||
free(temp);
|
free(temp);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_joinSecurejoin(JNIEnv *env, jclass cls, jstring qr)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_joinSecurejoin(JNIEnv *env, jobject obj, jstring qr)
|
||||||
{
|
{
|
||||||
CHAR_REF(qr);
|
CHAR_REF(qr);
|
||||||
jint ret = dc_join_securejoin(get_dc_context(env, cls), qrPtr);
|
jint ret = dc_join_securejoin(get_dc_context(env, obj), qrPtr);
|
||||||
CHAR_UNREF(qr);
|
CHAR_UNREF(qr);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -626,28 +617,28 @@ JNIEXPORT jint Java_com_b44t_messenger_DcContext_joinSecurejoin(JNIEnv *env, jcl
|
||||||
|
|
||||||
/* DcContext - misc. */
|
/* DcContext - misc. */
|
||||||
|
|
||||||
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_getInfo(JNIEnv *env, jclass cls)
|
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_getInfo(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
char* temp = dc_get_info(get_dc_context(env, cls));
|
char* temp = dc_get_info(get_dc_context(env, obj));
|
||||||
jstring ret = JSTRING_NEW(temp);
|
jstring ret = JSTRING_NEW(temp);
|
||||||
free(temp);
|
free(temp);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_getContactEncrInfo(JNIEnv *env, jclass cls, jint contact_id)
|
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_getContactEncrInfo(JNIEnv *env, jobject obj, jint contact_id)
|
||||||
{
|
{
|
||||||
char* temp = dc_get_contact_encrinfo(get_dc_context(env, cls), contact_id);
|
char* temp = dc_get_contact_encrinfo(get_dc_context(env, obj), contact_id);
|
||||||
jstring ret = JSTRING_NEW(temp);
|
jstring ret = JSTRING_NEW(temp);
|
||||||
free(temp);
|
free(temp);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_cmdline(JNIEnv *env, jclass cls, jstring cmd)
|
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_cmdline(JNIEnv *env, jobject obj, jstring cmd)
|
||||||
{
|
{
|
||||||
CHAR_REF(cmd);
|
CHAR_REF(cmd);
|
||||||
char* temp = dc_cmdline(get_dc_context(env, cls), cmdPtr);
|
char* temp = dc_cmdline(get_dc_context(env, obj), cmdPtr);
|
||||||
jstring ret = JSTRING_NEW(temp);
|
jstring ret = JSTRING_NEW(temp);
|
||||||
free(temp);
|
free(temp);
|
||||||
CHAR_UNREF(cmd);
|
CHAR_UNREF(cmd);
|
||||||
|
@ -655,10 +646,10 @@ JNIEXPORT jstring Java_com_b44t_messenger_DcContext_cmdline(JNIEnv *env, jclass
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_initiateKeyTransfer(JNIEnv *env, jclass cls)
|
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_initiateKeyTransfer(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
jstring setup_code = NULL;
|
jstring setup_code = NULL;
|
||||||
char* temp = dc_initiate_key_transfer(get_dc_context(env, cls));
|
char* temp = dc_initiate_key_transfer(get_dc_context(env, obj));
|
||||||
if( temp ) {
|
if( temp ) {
|
||||||
setup_code = JSTRING_NEW(temp);
|
setup_code = JSTRING_NEW(temp);
|
||||||
free(temp);
|
free(temp);
|
||||||
|
@ -667,37 +658,37 @@ JNIEXPORT jstring Java_com_b44t_messenger_DcContext_initiateKeyTransfer(JNIEnv *
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jboolean Java_com_b44t_messenger_DcContext_continueKeyTransfer(JNIEnv *env, jclass cls, jint msg_id, jstring setupCode)
|
JNIEXPORT jboolean Java_com_b44t_messenger_DcContext_continueKeyTransfer(JNIEnv *env, jobject obj, jint msg_id, jstring setupCode)
|
||||||
{
|
{
|
||||||
CHAR_REF(setupCode);
|
CHAR_REF(setupCode);
|
||||||
jboolean ret = dc_continue_key_transfer(get_dc_context(env, cls), msg_id, setupCodePtr);
|
jboolean ret = dc_continue_key_transfer(get_dc_context(env, obj), msg_id, setupCodePtr);
|
||||||
CHAR_UNREF(setupCode);
|
CHAR_UNREF(setupCode);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContext_imex(JNIEnv *env, jclass cls, jint what, jstring dir)
|
JNIEXPORT void Java_com_b44t_messenger_DcContext_imex(JNIEnv *env, jobject obj, jint what, jstring dir)
|
||||||
{
|
{
|
||||||
CHAR_REF(dir);
|
CHAR_REF(dir);
|
||||||
dc_imex(get_dc_context(env, cls), what, dirPtr, "");
|
dc_imex(get_dc_context(env, obj), what, dirPtr, "");
|
||||||
CHAR_UNREF(dir);
|
CHAR_UNREF(dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_checkPassword(JNIEnv *env, jclass cls, jstring pw)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_checkPassword(JNIEnv *env, jobject obj, jstring pw)
|
||||||
{
|
{
|
||||||
CHAR_REF(pw);
|
CHAR_REF(pw);
|
||||||
jint r = dc_check_password(get_dc_context(env, cls), pwPtr);
|
jint r = dc_check_password(get_dc_context(env, obj), pwPtr);
|
||||||
CHAR_UNREF(pw);
|
CHAR_UNREF(pw);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_imexHasBackup(JNIEnv *env, jclass cls, jstring dir)
|
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_imexHasBackup(JNIEnv *env, jobject obj, jstring dir)
|
||||||
{
|
{
|
||||||
CHAR_REF(dir);
|
CHAR_REF(dir);
|
||||||
jstring ret = NULL;
|
jstring ret = NULL;
|
||||||
char* temp = dc_imex_has_backup(get_dc_context(env, cls), dirPtr);
|
char* temp = dc_imex_has_backup(get_dc_context(env, obj), dirPtr);
|
||||||
if( temp ) {
|
if( temp ) {
|
||||||
ret = JSTRING_NEW(temp);
|
ret = JSTRING_NEW(temp);
|
||||||
free(temp);
|
free(temp);
|
||||||
|
@ -707,10 +698,10 @@ JNIEXPORT jstring Java_com_b44t_messenger_DcContext_imexHasBackup(JNIEnv *env, j
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_addAddressBook(JNIEnv *env, jclass cls, jstring adrbook)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_addAddressBook(JNIEnv *env, jobject obj, jstring adrbook)
|
||||||
{
|
{
|
||||||
CHAR_REF(adrbook);
|
CHAR_REF(adrbook);
|
||||||
int modify_count = dc_add_address_book(get_dc_context(env, cls), adrbookPtr);
|
int modify_count = dc_add_address_book(get_dc_context(env, obj), adrbookPtr);
|
||||||
CHAR_UNREF(adrbook);
|
CHAR_UNREF(adrbook);
|
||||||
return modify_count;
|
return modify_count;
|
||||||
}
|
}
|
||||||
|
@ -787,7 +778,7 @@ static dc_chat_t* get_dc_chat(JNIEnv *env, jobject obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcChat_DcChatUnref(JNIEnv *env, jclass c, jlong hChat)
|
JNIEXPORT void Java_com_b44t_messenger_DcChat_DcChatUnref(JNIEnv *env, jclass cls, jlong hChat)
|
||||||
{
|
{
|
||||||
dc_chat_unref((dc_chat_t*)hChat);
|
dc_chat_unref((dc_chat_t*)hChat);
|
||||||
}
|
}
|
||||||
|
@ -872,45 +863,45 @@ JNIEXPORT jlong Java_com_b44t_messenger_DcChat_getDraftTimestamp(JNIEnv *env, jo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_getChatMedia(JNIEnv *env, jclass cls, jint chat_id, jint msg_type, jint or_msg_type)
|
JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_getChatMedia(JNIEnv *env, jobject obj, jint chat_id, jint msg_type, jint or_msg_type)
|
||||||
{
|
{
|
||||||
dc_array_t* ca = dc_get_chat_media(get_dc_context(env, cls), chat_id, msg_type, or_msg_type);
|
dc_array_t* ca = dc_get_chat_media(get_dc_context(env, obj), chat_id, msg_type, or_msg_type);
|
||||||
return dc_array2jintArray_n_unref(env, ca);
|
return dc_array2jintArray_n_unref(env, ca);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_getNextMedia(JNIEnv *env, jclass cls, jint msg_id, jint dir)
|
JNIEXPORT jint Java_com_b44t_messenger_DcContext_getNextMedia(JNIEnv *env, jobject obj, jint msg_id, jint dir)
|
||||||
{
|
{
|
||||||
return dc_get_next_media(get_dc_context(env, cls), msg_id, dir);
|
return dc_get_next_media(get_dc_context(env, obj), msg_id, dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_getChatMsgs(JNIEnv *env, jclass cls, jint chat_id, jint flags, jint marker1before)
|
JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_getChatMsgs(JNIEnv *env, jobject obj, jint chat_id, jint flags, jint marker1before)
|
||||||
{
|
{
|
||||||
dc_array_t* ca = dc_get_chat_msgs(get_dc_context(env, cls), chat_id, flags, marker1before);
|
dc_array_t* ca = dc_get_chat_msgs(get_dc_context(env, obj), chat_id, flags, marker1before);
|
||||||
return dc_array2jintArray_n_unref(env, ca);
|
return dc_array2jintArray_n_unref(env, ca);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_searchMsgs(JNIEnv *env, jclass cls, jint chat_id, jstring query)
|
JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_searchMsgs(JNIEnv *env, jobject obj, jint chat_id, jstring query)
|
||||||
{
|
{
|
||||||
CHAR_REF(query);
|
CHAR_REF(query);
|
||||||
dc_array_t* ca = dc_search_msgs(get_dc_context(env, cls), chat_id, queryPtr);
|
dc_array_t* ca = dc_search_msgs(get_dc_context(env, obj), chat_id, queryPtr);
|
||||||
CHAR_UNREF(query);
|
CHAR_UNREF(query);
|
||||||
return dc_array2jintArray_n_unref(env, ca);
|
return dc_array2jintArray_n_unref(env, ca);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_getFreshMsgs(JNIEnv *env, jclass cls)
|
JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_getFreshMsgs(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
dc_array_t* ca = dc_get_fresh_msgs(get_dc_context(env, cls));
|
dc_array_t* ca = dc_get_fresh_msgs(get_dc_context(env, obj));
|
||||||
return dc_array2jintArray_n_unref(env, ca);
|
return dc_array2jintArray_n_unref(env, ca);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_getChatContacts(JNIEnv *env, jclass cls, jint chat_id)
|
JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_getChatContacts(JNIEnv *env, jobject obj, jint chat_id)
|
||||||
{
|
{
|
||||||
dc_array_t* ca = dc_get_chat_contacts(get_dc_context(env, cls), chat_id);
|
dc_array_t* ca = dc_get_chat_contacts(get_dc_context(env, obj), chat_id);
|
||||||
return dc_array2jintArray_n_unref(env, ca);
|
return dc_array2jintArray_n_unref(env, ca);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -934,7 +925,7 @@ static dc_msg_t* get_dc_msg(JNIEnv *env, jobject obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcMsg_DcMsgUnref(JNIEnv *env, jclass c, jlong hMsg)
|
JNIEXPORT void Java_com_b44t_messenger_DcMsg_DcMsgUnref(JNIEnv *env, jclass cls, jlong hMsg)
|
||||||
{
|
{
|
||||||
dc_msg_unref((dc_msg_t*)hMsg);
|
dc_msg_unref((dc_msg_t*)hMsg);
|
||||||
}
|
}
|
||||||
|
@ -1124,7 +1115,7 @@ static dc_contact_t* get_dc_contact(JNIEnv *env, jobject obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcContact_DcContactUnref(JNIEnv *env, jclass c, jlong hContact)
|
JNIEXPORT void Java_com_b44t_messenger_DcContact_DcContactUnref(JNIEnv *env, jclass cls, jlong hContact)
|
||||||
{
|
{
|
||||||
dc_contact_unref((dc_contact_t*)hContact);
|
dc_contact_unref((dc_contact_t*)hContact);
|
||||||
}
|
}
|
||||||
|
@ -1206,12 +1197,6 @@ static dc_lot_t* get_dc_lot(JNIEnv *env, jobject obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcLot_unref(JNIEnv *env, jclass cls, jlong hLot)
|
|
||||||
{
|
|
||||||
dc_lot_unref((dc_lot_t*)hLot);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jstring Java_com_b44t_messenger_DcLot_getText1(JNIEnv *env, jobject obj)
|
JNIEXPORT jstring Java_com_b44t_messenger_DcLot_getText1(JNIEnv *env, jobject obj)
|
||||||
{
|
{
|
||||||
char* temp = dc_lot_get_text1(get_dc_lot(env, obj));
|
char* temp = dc_lot_get_text1(get_dc_lot(env, obj));
|
||||||
|
@ -1254,7 +1239,7 @@ JNIEXPORT jint Java_com_b44t_messenger_DcLot_getId(JNIEnv *env, jobject obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void Java_com_b44t_messenger_DcLot_DcLotUnref(JNIEnv *env, jclass c, jlong hLot)
|
JNIEXPORT void Java_com_b44t_messenger_DcLot_DcLotUnref(JNIEnv *env, jclass cls, jlong hLot)
|
||||||
{
|
{
|
||||||
dc_lot_unref((dc_lot_t*)hLot);
|
dc_lot_unref((dc_lot_t*)hLot);
|
||||||
}
|
}
|
||||||
|
@ -1265,7 +1250,7 @@ JNIEXPORT void Java_com_b44t_messenger_DcLot_DcLotUnref(JNIEnv *env, jclass c, j
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_CPtr2String(JNIEnv *env, jclass c, jlong hStr)
|
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_CPtr2String(JNIEnv *env, jclass cls, jlong hStr)
|
||||||
{
|
{
|
||||||
/* the callback may return a long that represents a pointer to a C-String; this function creates a Java-string from such values. */
|
/* the callback may return a long that represents a pointer to a C-String; this function creates a Java-string from such values. */
|
||||||
if( hStr == 0 ) {
|
if( hStr == 0 ) {
|
||||||
|
@ -1276,7 +1261,7 @@ JNIEXPORT jstring Java_com_b44t_messenger_DcContext_CPtr2String(JNIEnv *env, jcl
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jlong Java_com_b44t_messenger_DcContext_String2CPtr(JNIEnv *env, jclass c, jstring str)
|
JNIEXPORT jlong Java_com_b44t_messenger_DcContext_String2CPtr(JNIEnv *env, jclass cls, jstring str)
|
||||||
{
|
{
|
||||||
char* hStr = NULL;
|
char* hStr = NULL;
|
||||||
if( str ) {
|
if( str ) {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* Delta Chat Android
|
* Delta Chat Java Adapter
|
||||||
* (C) 2017 Björn Petersen
|
* (C) 2017 Björn Petersen
|
||||||
* Contact: r10s@b44t.com, http://b44t.com
|
* Contact: r10s@b44t.com, http://b44t.com
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* Delta Chat Android
|
* Delta Chat Java Adapter
|
||||||
* (C) 2017 Björn Petersen
|
* (C) 2017 Björn Petersen
|
||||||
* Contact: r10s@b44t.com, http://b44t.com
|
* Contact: r10s@b44t.com, http://b44t.com
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* Delta Chat Android
|
* Delta Chat Java Adapter
|
||||||
* (C) 2017 Björn Petersen
|
* (C) 2017 Björn Petersen
|
||||||
* Contact: r10s@b44t.com, http://b44t.com
|
* Contact: r10s@b44t.com, http://b44t.com
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* Delta Chat Android
|
* Delta Chat Java Adapter
|
||||||
* (C) 2017 Björn Petersen
|
* (C) 2017 Björn Petersen
|
||||||
* Contact: r10s@b44t.com, http://b44t.com
|
* Contact: r10s@b44t.com, http://b44t.com
|
||||||
*
|
*
|
||||||
|
@ -23,16 +23,8 @@
|
||||||
package com.b44t.messenger;
|
package com.b44t.messenger;
|
||||||
|
|
||||||
|
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import java.io.BufferedInputStream;
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.net.HttpURLConnection;
|
|
||||||
import java.net.URL;
|
|
||||||
|
|
||||||
public class DcContext {
|
public class DcContext {
|
||||||
|
|
||||||
public final static int DC_EVENT_INFO = 100;
|
public final static int DC_EVENT_INFO = 100;
|
||||||
public final static int DC_EVENT_WARNING = 300;
|
public final static int DC_EVENT_WARNING = 300;
|
||||||
public final static int DC_EVENT_ERROR = 400;
|
public final static int DC_EVENT_ERROR = 400;
|
||||||
|
@ -75,153 +67,93 @@ public class DcContext {
|
||||||
public final static int DC_QR_URL = 332;
|
public final static int DC_QR_URL = 332;
|
||||||
public final static int DC_QR_ERROR = 400;
|
public final static int DC_QR_ERROR = 400;
|
||||||
|
|
||||||
public static void init () {
|
public DcContext(String osName) {
|
||||||
m_hContext = DcContextNew();
|
handleEvent(0,0,0);
|
||||||
|
m_hContext = DcContextNew(osName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public native static int open(String dbfile);
|
public native int open(String dbfile);
|
||||||
public native static void close();
|
public native void close();
|
||||||
public native static String getBlobdir();
|
public native String getBlobdir();
|
||||||
public native static void configure();
|
public native void configure();
|
||||||
public native static void stopOngoingProcess();
|
public native void stopOngoingProcess();
|
||||||
public native static int isConfigured();
|
public native int isConfigured();
|
||||||
public native static void performJobs();
|
public native void performJobs();
|
||||||
public native static void fetch();
|
public native void fetch();
|
||||||
public native static void idle();
|
public native void idle();
|
||||||
public native static void interruptIdle();
|
public native void interruptIdle();
|
||||||
public native static void performSmtpJobs();
|
public native void performSmtpJobs();
|
||||||
public native static void performSmtpIdle();
|
public native void performSmtpIdle();
|
||||||
public native static void interruptSmtpIdle();
|
public native void interruptSmtpIdle();
|
||||||
public native static void setConfig(String key, String value);
|
public native void setConfig(String key, String value);
|
||||||
public native static void setConfigInt(String key, int value);
|
public native void setConfigInt(String key, int value);
|
||||||
public native static String getConfig(String key, String def);
|
public native String getConfig(String key, String def);
|
||||||
public native static int getConfigInt(String key, int def);
|
public native int getConfigInt(String key, int def);
|
||||||
public native static String getInfo();
|
public native String getInfo();
|
||||||
public native static String cmdline(String cmd);
|
public native String cmdline(String cmd);
|
||||||
public native static String initiateKeyTransfer();
|
public native String initiateKeyTransfer();
|
||||||
public native static boolean continueKeyTransfer(int msg_id, String setup_code);
|
public native boolean continueKeyTransfer(int msg_id, String setup_code);
|
||||||
public native static void imex(int what, String dir);
|
public native void imex(int what, String dir);
|
||||||
public native static String imexHasBackup(String dir);
|
public native String imexHasBackup(String dir);
|
||||||
public native static int checkPassword(String pw);
|
public native int checkPassword(String pw);
|
||||||
public native static int[] getContacts(int flags, String query);
|
public native int[] getContacts(int flags, String query);
|
||||||
public native static int getBlockedCount();
|
public native int getBlockedCount();
|
||||||
public native static int[] getBlockedContacts();
|
public native int[] getBlockedContacts();
|
||||||
public static DcContact getContact(int contact_id) { return new DcContact(DcContextGetContact(m_hContext, contact_id)); }
|
public DcContact getContact(int contact_id) { return new DcContact(DcContextGetContact(m_hContext, contact_id)); }
|
||||||
public native static int createContact(String name, String addr);
|
public native int createContact(String name, String addr);
|
||||||
public native static void blockContact(int id, int block);
|
public native void blockContact(int id, int block);
|
||||||
public native static String getContactEncrInfo(int contact_id);
|
public native String getContactEncrInfo(int contact_id);
|
||||||
public native static int deleteContact(int id);
|
public native int deleteContact(int id);
|
||||||
public native static int addAddressBook(String adrbook);
|
public native int addAddressBook(String adrbook);
|
||||||
public static DcChatlist getChatlist(int listflags, String query, int queryId) { return new DcChatlist(DcContextGetChatlist(m_hContext, listflags, query, queryId)); }
|
public DcChatlist getChatlist(int listflags, String query, int queryId) { return new DcChatlist(DcContextGetChatlist(m_hContext, listflags, query, queryId)); }
|
||||||
public static DcChat getChat(int chat_id) { return new DcChat(DcContextGetChat(m_hContext, chat_id)); }
|
public DcChat getChat(int chat_id) { return new DcChat(DcContextGetChat(m_hContext, chat_id)); }
|
||||||
public native static void markseenMsgs(int msg_ids[]);
|
public native void markseenMsgs(int msg_ids[]);
|
||||||
public native static void marknoticedChat(int chat_id);
|
public native void marknoticedChat(int chat_id);
|
||||||
public native static void marknoticedContact(int contact_id);
|
public native void marknoticedContact(int contact_id);
|
||||||
public native static void archiveChat(int chat_id, int archive);
|
public native void archiveChat(int chat_id, int archive);
|
||||||
public native static int getChatIdByContactId(int contact_id);
|
public native int getChatIdByContactId(int contact_id);
|
||||||
public native static int createChatByContactId(int contact_id);
|
public native int createChatByContactId(int contact_id);
|
||||||
public native static int createChatByMsgId(int msg_id);
|
public native int createChatByMsgId(int msg_id);
|
||||||
public native static int createGroupChat(boolean verified, String name);
|
public native int createGroupChat(boolean verified, String name);
|
||||||
public native static int isContactInChat(int chat_id, int contact_id);
|
public native int isContactInChat(int chat_id, int contact_id);
|
||||||
public native static int addContactToChat(int chat_id, int contact_id);
|
public native int addContactToChat(int chat_id, int contact_id);
|
||||||
public native static int removeContactFromChat(int chat_id, int contact_id);
|
public native int removeContactFromChat(int chat_id, int contact_id);
|
||||||
public native static void setDraft(int chat_id, String draft/*NULL=delete*/);
|
public native void setDraft(int chat_id, String draft/*NULL=delete*/);
|
||||||
public native static int setChatName(int chat_id, String name);
|
public native int setChatName(int chat_id, String name);
|
||||||
public native static int setChatProfileImage(int chat_id, String name);
|
public native int setChatProfileImage(int chat_id, String name);
|
||||||
public native static int[] getChatMsgs(int chat_id, int flags, int marker1before);
|
public native int[] getChatMsgs(int chat_id, int flags, int marker1before);
|
||||||
public native static int[] searchMsgs(int chat_id, String query);
|
public native int[] searchMsgs(int chat_id, String query);
|
||||||
public native static int[] getFreshMsgs();
|
public native int[] getFreshMsgs();
|
||||||
public native static int[] getChatMedia(int chat_id, int msg_type, int or_msg_type);
|
public native int[] getChatMedia(int chat_id, int msg_type, int or_msg_type);
|
||||||
public native static int getNextMedia(int msg_id, int dir);
|
public native int getNextMedia(int msg_id, int dir);
|
||||||
public native static int[] getChatContacts(int chat_id);
|
public native int[] getChatContacts(int chat_id);
|
||||||
public native static void deleteChat(int chat_id);
|
public native void deleteChat(int chat_id);
|
||||||
public static DcMsg getMsg(int msg_id) { return new DcMsg(DcContextGetMsg(m_hContext, msg_id)); }
|
public DcMsg getMsg(int msg_id) { return new DcMsg(DcContextGetMsg(m_hContext, msg_id)); }
|
||||||
public native static String getMsgInfo(int id);
|
public native String getMsgInfo(int id);
|
||||||
public native static int getFreshMsgCount(int chat_id);
|
public native int getFreshMsgCount(int chat_id);
|
||||||
public native static void deleteMsgs(int msg_ids[]);
|
public native void deleteMsgs(int msg_ids[]);
|
||||||
public native static void forwardMsgs(int msg_ids[], int chat_ids);
|
public native void forwardMsgs(int msg_ids[], int chat_ids);
|
||||||
public native static int sendTextMsg(int chat_id, String text);
|
public native int sendTextMsg(int chat_id, String text);
|
||||||
public native static int sendVcardMsg(int chat_id, int contact_id);
|
public native int sendVcardMsg(int chat_id, int contact_id);
|
||||||
public native static int sendMediaMsg(int chat_id, int type, String file, String mime, int w, int h, int time_ms, String author, String trackname);
|
public native int sendMediaMsg(int chat_id, int type, String file, String mime, int w, int h, int time_ms, String author, String trackname);
|
||||||
public native static int checkQrCPtr(String qr);
|
public native int checkQrCPtr(String qr);
|
||||||
public static DcLot checkQr(String qr) { return new DcLot(checkQrCPtr(qr)); }
|
public DcLot checkQr(String qr) { return new DcLot(checkQrCPtr(qr)); }
|
||||||
public native static String getSecurejoinQr(int chat_id);
|
public native String getSecurejoinQr(int chat_id);
|
||||||
public native static int joinSecurejoin(String qr);
|
public native int joinSecurejoin(String qr);
|
||||||
|
|
||||||
|
// event handling
|
||||||
|
public static long handleEvent(final int event, final long data1, final long data2) // this function is called from within the C-wrapper
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// working with raw c-data
|
// working with raw c-data
|
||||||
private static long m_hContext = 0; // must not be renamed as referenced by JNI
|
private long m_hContext = 0; // must not be renamed as referenced by JNI
|
||||||
private native static long DcContextNew();
|
private native long DcContextNew(String osName);
|
||||||
private native static long DcContextGetChatlist(long hContext, int listflags, String query, int queryId);
|
private native static long DcContextGetChatlist(long hContext, int listflags, String query, int queryId);
|
||||||
private native static long DcContextGetChat(long hContext, int chat_id);
|
private native static long DcContextGetChat(long hContext, int chat_id);
|
||||||
private native static long DcContextGetMsg(long hMailbox, int id);
|
private native static long DcContextGetMsg(long hMailbox, int id);
|
||||||
private native static long DcContextGetContact(long hContext, int id);
|
private native static long DcContextGetContact(long hContext, int id);
|
||||||
public native static String CPtr2String(long hString); // get strings eg. from data1 from the callback
|
public native static String CPtr2String(long hString);
|
||||||
public native static long String2CPtr(String str);
|
public native static long String2CPtr(String str);
|
||||||
|
|
||||||
// event handling
|
|
||||||
public static final Object m_lastErrorLock = new Object();
|
|
||||||
public static int m_lastErrorCode = 0;
|
|
||||||
public static String m_lastErrorString = "";
|
|
||||||
public static boolean m_showNextErrorAsToast = true;
|
|
||||||
|
|
||||||
public static long DcCallback(final int event, final long data1, final long data2) // this function is called from within the C-wrapper
|
|
||||||
{
|
|
||||||
switch(event) {
|
|
||||||
case DC_EVENT_INFO:
|
|
||||||
Log.i("DeltaChat", CPtr2String(data2));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DC_EVENT_WARNING:
|
|
||||||
Log.w("DeltaChat", CPtr2String(data2));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DC_EVENT_ERROR:
|
|
||||||
Log.e("DeltaChat", CPtr2String(data2));
|
|
||||||
synchronized (m_lastErrorLock) {
|
|
||||||
m_lastErrorCode = (int)data1;
|
|
||||||
m_lastErrorString = CPtr2String(data2);
|
|
||||||
}
|
|
||||||
/*AndroidUtilities.runOnUIThread(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
synchronized (m_lastErrorLock) {
|
|
||||||
if( m_showNextErrorAsToast ) {
|
|
||||||
if(ForegroundDetector.getInstance().isForeground()) {
|
|
||||||
AndroidUtilities.showHint(ApplicationLoader.applicationContext, m_lastErrorString);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
m_showNextErrorAsToast = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});*/
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
case DC_EVENT_HTTP_GET:
|
|
||||||
String httpContent = null;
|
|
||||||
try {
|
|
||||||
URL url = new URL(CPtr2String(data1));
|
|
||||||
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
|
|
||||||
try {
|
|
||||||
urlConnection.setConnectTimeout(10*1000);
|
|
||||||
InputStream inputStream = new BufferedInputStream(urlConnection.getInputStream());
|
|
||||||
|
|
||||||
BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
|
|
||||||
|
|
||||||
StringBuilder total = new StringBuilder();
|
|
||||||
String line;
|
|
||||||
while ((line = r.readLine()) != null) {
|
|
||||||
total.append(line).append('\n');
|
|
||||||
}
|
|
||||||
httpContent = total.toString();
|
|
||||||
} finally {
|
|
||||||
urlConnection.disconnect();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch(Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return String2CPtr(httpContent);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* Delta Chat Android
|
* Delta Chat Java Adapter
|
||||||
* (C) 2017 Björn Petersen
|
* (C) 2017 Björn Petersen
|
||||||
* Contact: r10s@b44t.com, http://b44t.com
|
* Contact: r10s@b44t.com, http://b44t.com
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* Delta Chat Android
|
* Delta Chat Java Adapter
|
||||||
* (C) 2017 Björn Petersen
|
* (C) 2017 Björn Petersen
|
||||||
* Contact: r10s@b44t.com, http://b44t.com
|
* Contact: r10s@b44t.com, http://b44t.com
|
||||||
*
|
*
|
||||||
|
@ -71,11 +71,9 @@ public class DcMsg {
|
||||||
|
|
||||||
public native int getBytes();
|
public native int getBytes();
|
||||||
public DcLot getSummary(DcChat chat) { return new DcLot(getSummaryCPtr(chat.getCPtr())); }
|
public DcLot getSummary(DcChat chat) { return new DcLot(getSummaryCPtr(chat.getCPtr())); }
|
||||||
private native long getSummaryCPtr(long hChat);
|
|
||||||
public native String getSummarytext(int approx_characters);
|
public native String getSummarytext(int approx_characters);
|
||||||
public native int showPadlock();
|
public native int showPadlock();
|
||||||
public DcLot getMediainfo() { return new DcLot(getMediainfoCPtr()); }
|
public DcLot getMediainfo() { return new DcLot(getMediainfoCPtr()); }
|
||||||
private native long getMediainfoCPtr();
|
|
||||||
public native String getFile();
|
public native String getFile();
|
||||||
public native String getFilemime();
|
public native String getFilemime();
|
||||||
public native String getFilename();
|
public native String getFilename();
|
||||||
|
@ -88,5 +86,6 @@ public class DcMsg {
|
||||||
// working with raw c-data
|
// working with raw c-data
|
||||||
private long m_hMsg; // must not be renamed as referenced by JNI
|
private long m_hMsg; // must not be renamed as referenced by JNI
|
||||||
private native static void DcMsgUnref(long hMsg);
|
private native static void DcMsgUnref(long hMsg);
|
||||||
|
private native long getSummaryCPtr(long hChat);
|
||||||
|
private native long getMediainfoCPtr();
|
||||||
};
|
};
|
||||||
|
|
|
@ -82,6 +82,8 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc
|
||||||
|
|
||||||
private volatile boolean isAppVisible;
|
private volatile boolean isAppVisible;
|
||||||
|
|
||||||
|
public DcContext dcContext;
|
||||||
|
|
||||||
public static ApplicationContext getInstance(Context context) {
|
public static ApplicationContext getInstance(Context context) {
|
||||||
return (ApplicationContext)context.getApplicationContext();
|
return (ApplicationContext)context.getApplicationContext();
|
||||||
}
|
}
|
||||||
|
@ -91,8 +93,7 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
|
|
||||||
System.loadLibrary("native-utils");
|
System.loadLibrary("native-utils");
|
||||||
DcContext.DcCallback(0, 0, 0); // do not remove this call; this makes sure, the function is not removed from build or warnings are printed!
|
dcContext = new DcContext("Android");
|
||||||
DcContext.init();
|
|
||||||
|
|
||||||
initializeRandomNumberFix();
|
initializeRandomNumberFix();
|
||||||
initializeLogging();
|
initializeLogging();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue