diff --git a/app/build.gradle b/app/build.gradle index c2f57a2..e600ee0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,25 +1,25 @@ apply plugin: 'idea' apply plugin: 'com.android.application' +ext { + appName = "Abit" +} +if (project.hasProperty("project.configs") + && new File(project.property("project.configs") + appName + ".gradle").exists()) { + apply from: project.property("project.configs") + appName + ".gradle"; +} + android { - compileSdkVersion 23 - buildToolsVersion "23.0.3" + compileSdkVersion 24 + buildToolsVersion "24.0.1" defaultConfig { - applicationId "ch.dissem.apps.abit" + applicationId "ch.dissem.apps." + appName.toLowerCase() minSdkVersion 19 - targetSdkVersion 23 + targetSdkVersion 24 versionCode 7 versionName "1.0-beta7" } - signingConfigs { - release { - storeFile file(keyStoreFile) - storePassword keyStorePassword - keyAlias signingKeyAlias - keyPassword signingKeyPassword - } - } buildTypes { release { minifyEnabled false @@ -29,12 +29,12 @@ android { } } -ext.jabitVersion = '1.1.0-SNAPSHOT' +ext.jabitVersion = 'develop-SNAPSHOT' dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:23.3.0' - compile 'com.android.support:support-v4:23.3.0' - compile 'com.android.support:design:23.3.0' + compile 'com.android.support:appcompat-v7:24.1.1' + compile 'com.android.support:support-v4:24.1.1' + compile 'com.android.support:design:24.1.1' compile "ch.dissem.jabit:jabit-core:$jabitVersion" compile "ch.dissem.jabit:jabit-networking:$jabitVersion" diff --git a/app/src/main/assets/db/migration/V3.1__Update_table_POW.sql b/app/src/main/assets/db/migration/V3.1__Update_table_POW.sql new file mode 100644 index 0000000..d67a1b5 --- /dev/null +++ b/app/src/main/assets/db/migration/V3.1__Update_table_POW.sql @@ -0,0 +1,2 @@ +ALTER TABLE POW ADD COLUMN expiration_time BIGINT; +ALTER TABLE POW ADD COLUMN message_id BIGINT; diff --git a/app/src/main/assets/db/migration/V3.2__Update_table_message.sql b/app/src/main/assets/db/migration/V3.2__Update_table_message.sql new file mode 100644 index 0000000..1eba39f --- /dev/null +++ b/app/src/main/assets/db/migration/V3.2__Update_table_message.sql @@ -0,0 +1,4 @@ +ALTER TABLE Message ADD COLUMN ack_data BINARY(32); +ALTER TABLE Message ADD COLUMN ttl BIGINT NOT NULL DEFAULT 0; +ALTER TABLE Message ADD COLUMN retries INT NOT NULL DEFAULT 0; +ALTER TABLE Message ADD COLUMN next_try BIGINT; diff --git a/app/src/main/ic_launcher-web.png b/app/src/main/ic_launcher-web.png new file mode 100644 index 0000000..ef455ee Binary files /dev/null and b/app/src/main/ic_launcher-web.png differ diff --git a/app/src/main/java/ch/dissem/apps/abit/pow/ServerPowEngine.java b/app/src/main/java/ch/dissem/apps/abit/pow/ServerPowEngine.java index 1b94aa5..1dd81bb 100644 --- a/app/src/main/java/ch/dissem/apps/abit/pow/ServerPowEngine.java +++ b/app/src/main/java/ch/dissem/apps/abit/pow/ServerPowEngine.java @@ -36,7 +36,7 @@ import ch.dissem.bitmessage.extensions.pow.ProofOfWorkRequest; import ch.dissem.bitmessage.ports.ProofOfWorkEngine; import static ch.dissem.bitmessage.extensions.pow.ProofOfWorkRequest.Request.CALCULATE; -import static ch.dissem.bitmessage.utils.Singleton.security; +import static ch.dissem.bitmessage.utils.Singleton.cryptography; /** * @author Christian Basler @@ -78,7 +78,7 @@ public class ServerPowEngine implements ProofOfWorkEngine, InternalContext (request); cryptoMsg.signAndEncrypt( identity, - security().createPublicKey(identity.getPublicDecryptionKey()) + cryptography().createPublicKey(identity.getPublicDecryptionKey()) ); context.getNetworkHandler().send( Preferences.getTrustedNode(ctx), Preferences.getTrustedNodePort(ctx), diff --git a/app/src/main/java/ch/dissem/apps/abit/repository/AndroidMessageRepository.java b/app/src/main/java/ch/dissem/apps/abit/repository/AndroidMessageRepository.java index 6b128b4..5a1765e 100644 --- a/app/src/main/java/ch/dissem/apps/abit/repository/AndroidMessageRepository.java +++ b/app/src/main/java/ch/dissem/apps/abit/repository/AndroidMessageRepository.java @@ -22,17 +22,6 @@ import android.database.Cursor; import android.database.DatabaseUtils; import android.database.sqlite.SQLiteConstraintException; import android.database.sqlite.SQLiteDatabase; -import android.support.v4.database.DatabaseUtilsCompat; - -import ch.dissem.apps.abit.R; -import ch.dissem.bitmessage.InternalContext; -import ch.dissem.bitmessage.entity.BitmessageAddress; -import ch.dissem.bitmessage.entity.Plaintext; -import ch.dissem.bitmessage.entity.valueobject.InventoryVector; -import ch.dissem.bitmessage.entity.valueobject.Label; -import ch.dissem.bitmessage.ports.MessageRepository; -import ch.dissem.bitmessage.utils.Encode; -import ch.dissem.bitmessage.utils.Strings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,12 +32,19 @@ import java.util.Collection; import java.util.LinkedList; import java.util.List; -import static ch.dissem.apps.abit.repository.SqlHelper.join; +import ch.dissem.apps.abit.R; +import ch.dissem.bitmessage.entity.BitmessageAddress; +import ch.dissem.bitmessage.entity.Plaintext; +import ch.dissem.bitmessage.entity.valueobject.InventoryVector; +import ch.dissem.bitmessage.entity.valueobject.Label; +import ch.dissem.bitmessage.ports.AbstractMessageRepository; +import ch.dissem.bitmessage.ports.MessageRepository; +import ch.dissem.bitmessage.utils.Encode; /** * {@link MessageRepository} implementation using the Android SQL API. */ -public class AndroidMessageRepository implements MessageRepository, InternalContext.ContextHolder { +public class AndroidMessageRepository extends AbstractMessageRepository { private static final Logger LOG = LoggerFactory.getLogger(AndroidMessageRepository.class); private static final String TABLE_NAME = "Message"; @@ -58,9 +54,13 @@ public class AndroidMessageRepository implements MessageRepository, InternalCont private static final String COLUMN_SENDER = "sender"; private static final String COLUMN_RECIPIENT = "recipient"; private static final String COLUMN_DATA = "data"; + private static final String COLUMN_ACK_DATA = "ack_data"; private static final String COLUMN_SENT = "sent"; private static final String COLUMN_RECEIVED = "received"; private static final String COLUMN_STATUS = "status"; + private static final String COLUMN_TTL = "ttl"; + private static final String COLUMN_RETRIES = "retries"; + private static final String COLUMN_NEXT_TRY = "next_try"; private static final String COLUMN_INITIAL_HASH = "initial_hash"; private static final String JOIN_TABLE_NAME = "Message_Label"; @@ -74,27 +74,11 @@ public class AndroidMessageRepository implements MessageRepository, InternalCont private static final String LBL_COLUMN_COLOR = "color"; private static final String LBL_COLUMN_ORDER = "ord"; private final SqlHelper sql; - private final Context ctx; - private InternalContext bmc; + private final Context context; public AndroidMessageRepository(SqlHelper sql, Context ctx) { this.sql = sql; - this.ctx = ctx; - } - - @Override - public void setContext(InternalContext context) { - bmc = context; - } - - @Override - public List