mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 02:39:05 +01:00
Merge branch 'enable-connect-via-bluetooth' into 'master'
Enable connect via Bluetooth feature in release builds See merge request briar/briar!1531
This commit is contained in:
15
.idea/codeStyles/Project.xml
generated
15
.idea/codeStyles/Project.xml
generated
@@ -31,15 +31,6 @@
|
||||
<option name="PACKAGES_TO_USE_STAR_IMPORTS">
|
||||
<value />
|
||||
</option>
|
||||
<option name="PACKAGES_IMPORT_LAYOUT">
|
||||
<value>
|
||||
<package name="" alias="false" withSubpackages="true" />
|
||||
<package name="java" alias="false" withSubpackages="true" />
|
||||
<package name="javax" alias="false" withSubpackages="true" />
|
||||
<package name="kotlin" alias="false" withSubpackages="true" />
|
||||
<package name="" alias="true" withSubpackages="true" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="NAME_COUNT_TO_USE_STAR_IMPORT" value="2147483647" />
|
||||
<option name="NAME_COUNT_TO_USE_STAR_IMPORT_FOR_MEMBERS" value="2147483647" />
|
||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||
@@ -197,9 +188,9 @@
|
||||
</codeStyleSettings>
|
||||
<codeStyleSettings language="kotlin">
|
||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||
<option name="PARAMETER_ANNOTATION_WRAP" value="1" />
|
||||
<option name="VARIABLE_ANNOTATION_WRAP" value="1" />
|
||||
<option name="ENUM_CONSTANTS_WRAP" value="1" />
|
||||
<indentOptions>
|
||||
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||
</indentOptions>
|
||||
</codeStyleSettings>
|
||||
</code_scheme>
|
||||
</component>
|
||||
@@ -11,8 +11,6 @@ public interface FeatureFlags {
|
||||
|
||||
boolean shouldEnableDisappearingMessages();
|
||||
|
||||
boolean shouldEnableConnectViaBluetooth();
|
||||
|
||||
boolean shouldEnableTransferData();
|
||||
|
||||
boolean shouldEnableShareAppViaOfflineHotspot();
|
||||
|
||||
@@ -25,11 +25,6 @@ public class TestFeatureFlagModule {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldEnableConnectViaBluetooth() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldEnableTransferData() {
|
||||
return true;
|
||||
|
||||
@@ -313,11 +313,6 @@ public class AppModule {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldEnableConnectViaBluetooth() {
|
||||
return IS_DEBUG_BUILD;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldEnableTransferData() {
|
||||
return IS_DEBUG_BUILD;
|
||||
|
||||
@@ -379,9 +379,6 @@ public class ConversationActivity extends BriarActivity
|
||||
this::showIntroductionOnboarding);
|
||||
}
|
||||
});
|
||||
if (!featureFlags.shouldEnableConnectViaBluetooth()) {
|
||||
menu.findItem(R.id.action_connect_via_bluetooth).setVisible(false);
|
||||
}
|
||||
// Transfer Data feature only supported on API 19+
|
||||
if (SDK_INT >= 19 && featureFlags.shouldEnableTransferData()) {
|
||||
menu.findItem(R.id.action_transfer_data).setVisible(true);
|
||||
|
||||
@@ -37,7 +37,7 @@ constructor(
|
||||
?: throw UsageError("Could not get password. Is STDIN connected?")
|
||||
try {
|
||||
accountManager.signIn(password)
|
||||
} catch (e : DecryptionException) {
|
||||
} catch (e: DecryptionException) {
|
||||
echo("Error: Password invalid")
|
||||
exitProcess(1)
|
||||
}
|
||||
|
||||
@@ -95,7 +95,6 @@ internal class HeadlessModule(private val appDir: File) {
|
||||
override fun shouldEnableImageAttachments() = false
|
||||
override fun shouldEnableProfilePictures() = false
|
||||
override fun shouldEnableDisappearingMessages() = false
|
||||
override fun shouldEnableConnectViaBluetooth() = false
|
||||
override fun shouldEnableTransferData() = false
|
||||
override fun shouldEnableShareAppViaOfflineHotspot() = false
|
||||
}
|
||||
|
||||
@@ -3,7 +3,11 @@ package org.briarproject.briar.headless
|
||||
import com.fasterxml.jackson.core.JsonParseException
|
||||
import com.fasterxml.jackson.databind.ObjectMapper
|
||||
import io.javalin.Javalin
|
||||
import io.javalin.apibuilder.ApiBuilder.*
|
||||
import io.javalin.apibuilder.ApiBuilder.delete
|
||||
import io.javalin.apibuilder.ApiBuilder.get
|
||||
import io.javalin.apibuilder.ApiBuilder.path
|
||||
import io.javalin.apibuilder.ApiBuilder.post
|
||||
import io.javalin.apibuilder.ApiBuilder.put
|
||||
import io.javalin.core.security.AccessManager
|
||||
import io.javalin.core.util.Header.AUTHORIZATION
|
||||
import io.javalin.http.BadRequestResponse
|
||||
|
||||
@@ -6,16 +6,16 @@ import org.briarproject.briar.api.blog.MessageType
|
||||
import org.briarproject.briar.headless.json.JsonDict
|
||||
|
||||
internal fun BlogPostHeader.output(text: String) = JsonDict(
|
||||
"text" to text,
|
||||
"author" to author.output(),
|
||||
"authorStatus" to authorInfo.status.output(),
|
||||
"type" to type.output(),
|
||||
"id" to id.bytes,
|
||||
"parentId" to parentId?.bytes,
|
||||
"read" to isRead,
|
||||
"rssFeed" to isRssFeed,
|
||||
"timestamp" to timestamp,
|
||||
"timestampReceived" to timeReceived
|
||||
)
|
||||
"text" to text,
|
||||
"author" to author.output(),
|
||||
"authorStatus" to authorInfo.status.output(),
|
||||
"type" to type.output(),
|
||||
"id" to id.bytes,
|
||||
"parentId" to parentId?.bytes,
|
||||
"read" to isRead,
|
||||
"rssFeed" to isRssFeed,
|
||||
"timestamp" to timestamp,
|
||||
"timestampReceived" to timeReceived
|
||||
)
|
||||
|
||||
internal fun MessageType.output() = name.toLowerCase()
|
||||
|
||||
@@ -2,7 +2,11 @@ package org.briarproject.briar.headless.contact
|
||||
|
||||
import org.briarproject.bramble.api.contact.PendingContact
|
||||
import org.briarproject.bramble.api.contact.PendingContactState
|
||||
import org.briarproject.bramble.api.contact.PendingContactState.*
|
||||
import org.briarproject.bramble.api.contact.PendingContactState.ADDING_CONTACT
|
||||
import org.briarproject.bramble.api.contact.PendingContactState.CONNECTING
|
||||
import org.briarproject.bramble.api.contact.PendingContactState.FAILED
|
||||
import org.briarproject.bramble.api.contact.PendingContactState.OFFLINE
|
||||
import org.briarproject.bramble.api.contact.PendingContactState.WAITING_FOR_CONNECTION
|
||||
import org.briarproject.bramble.api.contact.event.PendingContactAddedEvent
|
||||
import org.briarproject.bramble.api.contact.event.PendingContactRemovedEvent
|
||||
import org.briarproject.bramble.api.contact.event.PendingContactStateChangedEvent
|
||||
@@ -14,7 +18,7 @@ internal fun PendingContact.output() = JsonDict(
|
||||
"timestamp" to timestamp
|
||||
)
|
||||
|
||||
internal fun PendingContactState.output() = when(this) {
|
||||
internal fun PendingContactState.output() = when (this) {
|
||||
WAITING_FOR_CONNECTION -> "waiting_for_connection"
|
||||
OFFLINE -> "offline"
|
||||
CONNECTING -> "connecting"
|
||||
|
||||
@@ -14,7 +14,12 @@ import org.briarproject.bramble.api.identity.LocalAuthor
|
||||
import org.briarproject.bramble.api.sync.Group
|
||||
import org.briarproject.bramble.api.sync.Message
|
||||
import org.briarproject.bramble.api.system.Clock
|
||||
import org.briarproject.bramble.test.TestUtils.*
|
||||
import org.briarproject.bramble.test.TestUtils.getAuthor
|
||||
import org.briarproject.bramble.test.TestUtils.getClientId
|
||||
import org.briarproject.bramble.test.TestUtils.getContact
|
||||
import org.briarproject.bramble.test.TestUtils.getGroup
|
||||
import org.briarproject.bramble.test.TestUtils.getLocalAuthor
|
||||
import org.briarproject.bramble.test.TestUtils.getMessage
|
||||
import org.briarproject.bramble.util.StringUtils.getRandomString
|
||||
import org.briarproject.briar.api.conversation.ConversationManager
|
||||
import org.briarproject.briar.headless.event.WebSocketController
|
||||
|
||||
@@ -48,31 +48,31 @@ abstract class IntegrationTest {
|
||||
dataDir.deleteRecursively()
|
||||
}
|
||||
|
||||
protected fun get(url: String) : Response {
|
||||
protected fun get(url: String): Response {
|
||||
return khttp.get(url, getAuthTokenHeader(token))
|
||||
}
|
||||
|
||||
protected fun getWithWrongToken(url: String) : Response {
|
||||
protected fun getWithWrongToken(url: String): Response {
|
||||
return khttp.get(url, getAuthTokenHeader("wrongToken"))
|
||||
}
|
||||
|
||||
protected fun post(url: String, data: String) : Response {
|
||||
protected fun post(url: String, data: String): Response {
|
||||
return khttp.post(url, getAuthTokenHeader(token), data = data)
|
||||
}
|
||||
|
||||
protected fun postWithWrongToken(url: String) : Response {
|
||||
protected fun postWithWrongToken(url: String): Response {
|
||||
return khttp.post(url, getAuthTokenHeader("wrongToken"), data = "")
|
||||
}
|
||||
|
||||
protected fun delete(url: String) : Response {
|
||||
protected fun delete(url: String): Response {
|
||||
return khttp.delete(url, getAuthTokenHeader(token))
|
||||
}
|
||||
|
||||
protected fun delete(url: String, data: String) : Response {
|
||||
protected fun delete(url: String, data: String): Response {
|
||||
return khttp.delete(url, getAuthTokenHeader(token), data = data)
|
||||
}
|
||||
|
||||
protected fun deleteWithWrongToken(url: String) : Response {
|
||||
protected fun deleteWithWrongToken(url: String): Response {
|
||||
return khttp.delete(url, getAuthTokenHeader("wrongToken"))
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Assertions.assertTrue
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
class ContactControllerIntegrationTest: IntegrationTest() {
|
||||
class ContactControllerIntegrationTest : IntegrationTest() {
|
||||
|
||||
@Test
|
||||
fun `returning list of contacts needs authentication token`() {
|
||||
@@ -24,7 +24,7 @@ class ContactControllerIntegrationTest: IntegrationTest() {
|
||||
assertEquals(0, response.jsonArray.length())
|
||||
|
||||
// add one test contact
|
||||
val testContactName= "testContactName"
|
||||
val testContactName = "testContactName"
|
||||
testDataCreator.addContact(testContactName, true, false)
|
||||
|
||||
// retrieve list with one test contact
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package org.briarproject.briar.headless.contact
|
||||
|
||||
import io.javalin.http.BadRequestResponse
|
||||
import io.javalin.http.ForbiddenResponse
|
||||
import io.javalin.http.HttpResponseException
|
||||
import io.javalin.http.NotFoundResponse
|
||||
import io.javalin.plugin.json.JavalinJson.toJson
|
||||
import io.mockk.Runs
|
||||
@@ -35,7 +33,6 @@ import org.briarproject.bramble.util.StringUtils.getRandomString
|
||||
import org.briarproject.briar.headless.ControllerTest
|
||||
import org.briarproject.briar.headless.getFromJson
|
||||
import org.briarproject.briar.headless.json.JsonDict
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Assertions.assertNotNull
|
||||
import org.junit.jupiter.api.Assertions.assertThrows
|
||||
import org.junit.jupiter.api.Test
|
||||
@@ -316,7 +313,9 @@ internal class ContactControllerTest : ControllerTest() {
|
||||
fun testSetContactAliasInvalid() {
|
||||
mockkStatic("org.briarproject.briar.headless.RouterKt")
|
||||
every { ctx.pathParam("contactId") } returns "1"
|
||||
every { ctx.getFromJson(objectMapper, "alias") } returns getRandomString(MAX_AUTHOR_NAME_LENGTH + 1)
|
||||
every {
|
||||
ctx.getFromJson(objectMapper, "alias")
|
||||
} returns getRandomString(MAX_AUTHOR_NAME_LENGTH + 1)
|
||||
assertThrows(BadRequestResponse::class.java) {
|
||||
controller.setContactAlias(ctx)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user