feat: Take care of publishing
This commit is contained in:
		
							parent
							
								
									bb5ef414f2
								
							
						
					
					
						commit
						b986096aa0
					
				| @ -35,6 +35,10 @@ void main() async { | ||||
|     // This needs to be wired into your XMPP library's OMEMO implementation. | ||||
|     // For simplicity, we use an empty function and imagine it works. | ||||
|     (jid) async {}, | ||||
|     // This function is called whenever our own device bundle has to be republished to our PEP node. | ||||
|     // This needs to be wired into your XMPP library's OMEMO implementation. | ||||
|     // For simplicity, we use an empty function and imagine it works. | ||||
|     (device) async {}, | ||||
|   ); | ||||
| 
 | ||||
|   // Alice now wants to chat with Bob at his bare Jid "bob@other.server". To make things | ||||
|  | ||||
| @ -57,6 +57,9 @@ typedef FetchDeviceBundleFunction = Future<OmemoBundle?> Function( | ||||
| /// Subscribes to the device list node of [jid]. | ||||
| typedef DeviceListSubscribeFunction = Future<void> Function(String jid); | ||||
| 
 | ||||
| /// Publishes the device bundle on our own PEP node. | ||||
| typedef PublishDeviceBundleFunction = Future<void> Function(OmemoDevice device); | ||||
| 
 | ||||
| /// Commits the device list for [jid] to persistent storage. [added] will be the list of | ||||
| /// devices added and [removed] will be the list of removed devices. | ||||
| typedef CommitDeviceListCallback = Future<void> Function( | ||||
| @ -107,7 +110,8 @@ class OmemoManager { | ||||
|     this.sendEmptyOmemoMessageImpl, | ||||
|     this.fetchDeviceListImpl, | ||||
|     this.fetchDeviceBundleImpl, | ||||
|     this.subscribeToDeviceListNodeImpl, { | ||||
|     this.subscribeToDeviceListNodeImpl, | ||||
|     this.publishDeviceBundle, { | ||||
|     this.commitRatchets = commitRatchetsStub, | ||||
|     this.commitDeviceList = commitDeviceListStub, | ||||
|     this.commitDevice = commitDeviceStub, | ||||
| @ -133,6 +137,9 @@ class OmemoManager { | ||||
|   /// Subscribe to the device list PEP node of @jid. | ||||
|   final DeviceListSubscribeFunction subscribeToDeviceListNodeImpl; | ||||
| 
 | ||||
|   /// Publishes the device bundle on the PEP node. | ||||
|   final PublishDeviceBundleFunction publishDeviceBundle; | ||||
| 
 | ||||
|   /// Callback to commit the ratchet to persistent storage. | ||||
|   final CommitRatchetsCallback commitRatchets; | ||||
| 
 | ||||
| @ -494,6 +501,11 @@ class OmemoManager { | ||||
|         await _deviceLock.synchronized(() async { | ||||
|           await _device.replaceOnetimePrekey(kexMessage.pkId); | ||||
|           await commitDevice(_device); | ||||
| 
 | ||||
|           // Publish the device bundle | ||||
|           unawaited( | ||||
|             publishDeviceBundle(_device), | ||||
|           ); | ||||
|         }); | ||||
|       } | ||||
| 
 | ||||
| @ -982,6 +994,11 @@ class OmemoManager { | ||||
| 
 | ||||
|       // Commit the device | ||||
|       await commitDevice(_device); | ||||
| 
 | ||||
|       // Publish | ||||
|       unawaited( | ||||
|         publishDeviceBundle(_device), | ||||
|       ); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|  | ||||
| @ -48,6 +48,7 @@ void main() { | ||||
|         return bobDevice.toBundle(); | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
|     final bobManager = OmemoManager( | ||||
|       bobDevice, | ||||
| @ -64,6 +65,7 @@ void main() { | ||||
|         return aliceDevice.toBundle(); | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
| 
 | ||||
|     // Alice sends a message | ||||
| @ -147,6 +149,7 @@ void main() { | ||||
|         return bobDevice.toBundle(); | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
|     final bobManager = OmemoManager( | ||||
|       bobDevice, | ||||
| @ -164,6 +167,7 @@ void main() { | ||||
|         return aliceDevice.toBundle(); | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
| 
 | ||||
|     // Alice sends a message | ||||
| @ -304,6 +308,7 @@ void main() { | ||||
|       (jid) async => [], | ||||
|       (jid, id) async => null, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
| 
 | ||||
|     // Get non-existant fingerprints | ||||
| @ -347,6 +352,7 @@ void main() { | ||||
|             : bobCurrentDevice.toBundle(); | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
|     final bobManager = OmemoManager( | ||||
|       bobCurrentDevice, | ||||
| @ -355,6 +361,7 @@ void main() { | ||||
|       (jid) async => [], | ||||
|       (jid, id) async => null, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
| 
 | ||||
|     // Alice encrypts a message to Bob | ||||
| @ -447,6 +454,7 @@ void main() { | ||||
|         return null; | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
|     final bobManager1 = OmemoManager( | ||||
|       bobDevice1, | ||||
| @ -455,6 +463,7 @@ void main() { | ||||
|       (jid) async => [], | ||||
|       (jid, id) async => null, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
|     final bobManager2 = OmemoManager( | ||||
|       bobDevice2, | ||||
| @ -469,6 +478,7 @@ void main() { | ||||
|         return aliceDevice.toBundle(); | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
| 
 | ||||
|     // Alice sends a message to Bob | ||||
| @ -558,6 +568,7 @@ void main() { | ||||
|         return null; | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
|     final bobManager1 = OmemoManager( | ||||
|       bobDevice1, | ||||
| @ -566,6 +577,7 @@ void main() { | ||||
|       (jid) async => null, | ||||
|       (jid, id) async => null, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
|     final bobManager2 = OmemoManager( | ||||
|       bobDevice2, | ||||
| @ -574,6 +586,7 @@ void main() { | ||||
|       (jid) async => null, | ||||
|       (jid, id) async => null, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
| 
 | ||||
|     // Alice sends a message to Bob | ||||
| @ -704,6 +717,7 @@ void main() { | ||||
|         return null; | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
|     final bobManager = OmemoManager( | ||||
|       bobDevice, | ||||
| @ -712,6 +726,7 @@ void main() { | ||||
|       (jid) async => null, | ||||
|       (jid, id) async => null, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
|     final cocoManager = OmemoManager( | ||||
|       cocoDevice, | ||||
| @ -720,6 +735,7 @@ void main() { | ||||
|       (jid) async => null, | ||||
|       (jid, id) async => null, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
| 
 | ||||
|     // Alice sends a message to Bob and Coco | ||||
| @ -782,6 +798,7 @@ void main() { | ||||
|         return failure ? null : bobDevice.toBundle(); | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
|     final bobManager = OmemoManager( | ||||
|       bobDevice, | ||||
| @ -790,6 +807,7 @@ void main() { | ||||
|       (jid) async => null, | ||||
|       (jid, id) async => null, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
| 
 | ||||
|     // Alice sends a message to Bob and Coco | ||||
| @ -871,6 +889,7 @@ void main() { | ||||
|         return null; | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
| 
 | ||||
|     // Alice sends a message to Bob | ||||
| @ -915,6 +934,7 @@ void main() { | ||||
|         return null; | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
|     final bobManager = OmemoManager( | ||||
|       bobDevice, | ||||
| @ -923,6 +943,7 @@ void main() { | ||||
|       (jid) async => null, | ||||
|       (jid, id) async => null, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
| 
 | ||||
|     // Alice sends a message to Bob and Coco | ||||
| @ -978,6 +999,7 @@ void main() { | ||||
|         return bobDevice.toBundle(); | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
|     final bobManager = OmemoManager( | ||||
|       bobDevice, | ||||
| @ -986,6 +1008,7 @@ void main() { | ||||
|       (jid) async => null, | ||||
|       (jid, id) async => null, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
| 
 | ||||
|     // Alice encrypts a message for Bob | ||||
| @ -1065,6 +1088,7 @@ void main() { | ||||
|         return bobDevice.toBundle(); | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
|     final bobManager = OmemoManager( | ||||
|       bobDevice, | ||||
| @ -1073,6 +1097,7 @@ void main() { | ||||
|       (jid) async => null, | ||||
|       (jid, id) async => null, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
| 
 | ||||
|     // Alice encrypts a message for Bob | ||||
| @ -1206,6 +1231,7 @@ void main() { | ||||
|         return bobDevice.toBundle(); | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
|     final bobManager = OmemoManager( | ||||
|       bobDevice, | ||||
| @ -1214,6 +1240,7 @@ void main() { | ||||
|       (jid) async => null, | ||||
|       (jid, id) async => null, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
| 
 | ||||
|     // Alice encrypts a message for Bob | ||||
| @ -1338,6 +1365,7 @@ void main() { | ||||
|         return bobDevice.toBundle(); | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
|     final bobManager = OmemoManager( | ||||
|       bobDevice, | ||||
| @ -1352,6 +1380,7 @@ void main() { | ||||
|         return aliceDevice.toBundle(); | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
| 
 | ||||
|     // Alice sends Bob a message | ||||
| @ -1491,6 +1520,7 @@ void main() { | ||||
|         return bobDevice.toBundle(); | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
|     final bobManager = OmemoManager( | ||||
|       bobDevice, | ||||
| @ -1505,6 +1535,7 @@ void main() { | ||||
|         return aliceDevice.toBundle(); | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
| 
 | ||||
|     // Alice sends Bob a message | ||||
| @ -1563,6 +1594,7 @@ void main() { | ||||
|         return bobDevice.toBundle(); | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
|     final aliceManager2 = OmemoManager( | ||||
|       aliceDevice2, | ||||
| @ -1577,6 +1609,7 @@ void main() { | ||||
|         return bobDevice.toBundle(); | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
| 
 | ||||
|     EncryptionResult? bobEmptyMessage; | ||||
| @ -1606,6 +1639,7 @@ void main() { | ||||
|         return null; | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
| 
 | ||||
|     // Alice sends Bob a message | ||||
| @ -1693,6 +1727,7 @@ void main() { | ||||
|         return bobDevice.toBundle(); | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
|     final aliceManager2 = OmemoManager( | ||||
|       aliceDevice2, | ||||
| @ -1707,6 +1742,7 @@ void main() { | ||||
|         return bobDevice.toBundle(); | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
| 
 | ||||
|     EncryptionResult? bobEmptyMessage; | ||||
| @ -1734,6 +1770,7 @@ void main() { | ||||
|         return null; | ||||
|       }, | ||||
|       (jid) async {}, | ||||
|       (_) async {}, | ||||
|     ); | ||||
| 
 | ||||
|     // Alice sends Bob a message | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user