mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-02 21:32:34 +00:00
Route calls through an entry point the native stack can implement
Adds the seam a native MatrixRTC call stack plugs into, with nothing behind it yet, so that the stack itself lands as a self-contained change. `FeatureFlags.NativeCall` is off by default and unfinished. `features/callnative/api` declares `NativeCallEntryPoint`, and `features/callnative/impl` provides a default that logs and does nothing: turning the flag on today gets no call and a line in the log. That is the honest outcome, where falling back to the WebView would make the flag look broken rather than unimplemented. `DefaultElementCallEntryPoint` forks on the flag. The read is asynchronous because the flag is storage-backed, and caching it in an eagerly started StateFlow would race a call placed just after app start onto the default value. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Copyright (c) 2026 Element Creations Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
plugins {
|
||||
id("io.element.android-library")
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "io.element.android.features.callnative.api"
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// api, not implementation: CallData is part of NativeCallEntryPoint's signature.
|
||||
api(projects.features.call.api)
|
||||
implementation(projects.libraries.architecture)
|
||||
implementation(projects.libraries.matrix.api)
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Copyright (c) 2026 Element Creations Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.features.callnative.api
|
||||
|
||||
import io.element.android.features.call.api.CallData
|
||||
|
||||
/**
|
||||
* Starts a call on the native MatrixRTC stack instead of the Element Call WebView.
|
||||
*
|
||||
* Experimental: gated behind `FeatureFlags.NativeCall` and reached only through
|
||||
* [io.element.android.features.call.api.ElementCallEntryPoint], so nothing else in the app has to know
|
||||
* it exists.
|
||||
*
|
||||
* There is nothing behind this seam yet - the default implementation does nothing and says so. The
|
||||
* native stack that implements it is a separate library, added in a follow-up.
|
||||
*/
|
||||
interface NativeCallEntryPoint {
|
||||
fun startCall(callData: CallData)
|
||||
}
|
||||
Reference in New Issue
Block a user