1212// See the License for the specific language governing permissions and
1313// limitations under the License.
1414
15+ import 'package:meta/meta.dart' ;
16+
1517import 'key_provider.dart' ;
1618
1719enum EncryptionType {
@@ -26,18 +28,37 @@ enum EncryptionType {
2628/// or a shared passphrase ([E2EEOptions.sharedKey] ). Resolution of the
2729/// passphrase into a native key provider is deferred to [E2EEManager.setup] .
2830class E2EEOptions {
29- /// A pre-built [BaseKeyProvider] , or `null` when this instance was created
30- /// via [E2EEOptions.sharedKey] .
31- final BaseKeyProvider ? keyProvider;
31+ final BaseKeyProvider ? _keyProvider;
3232
33- /// A shared passphrase, or `null` when a [keyProvider ] was provided.
33+ /// A shared passphrase, or `null` when a [BaseKeyProvider ] was provided.
3434 final String ? sharedKey;
3535
3636 final EncryptionType encryptionType = EncryptionType .kGcm;
3737
38- const E2EEOptions ({required BaseKeyProvider this .keyProvider}) : sharedKey = null ;
38+ const E2EEOptions ({required BaseKeyProvider keyProvider})
39+ : _keyProvider = keyProvider,
40+ sharedKey = null ;
3941
4042 const E2EEOptions .sharedKey (String key)
4143 : sharedKey = key,
42- keyProvider = null ;
44+ _keyProvider = null ;
45+
46+ /// The underlying [BaseKeyProvider] .
47+ ///
48+ /// Available immediately when built via the default constructor. Throws
49+ /// [StateError] when built via [E2EEOptions.sharedKey] — the provider is
50+ /// created lazily inside [E2EEManager.setup] ; read it from
51+ /// `room.e2eeManager!.keyProvider` after connect instead.
52+ BaseKeyProvider get keyProvider =>
53+ _keyProvider ??
54+ (throw StateError (
55+ 'E2EEOptions was constructed via E2EEOptions.sharedKey(...); '
56+ 'BaseKeyProvider is built lazily inside E2EEManager.setup(). '
57+ 'Access it via room.e2eeManager!.keyProvider after connect.' ,
58+ ));
59+
60+ /// Internal accessor used by [E2EEManager.setup] to read the pre-built
61+ /// provider without triggering the throwing [keyProvider] getter.
62+ @internal
63+ BaseKeyProvider ? get keyProviderOrNull => _keyProvider;
4364}
0 commit comments