feat: Minor changes
This commit is contained in:
		
							parent
							
								
									b986096aa0
								
							
						
					
					
						commit
						c086579b57
					
				
							
								
								
									
										23
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								README.md
									
									
									
									
									
								
							| @ -28,22 +28,25 @@ Include `omemo_dart` in your `pubspec.yaml` like this: | |||||||
| dependencies: | dependencies: | ||||||
|   omemo_dart: |   omemo_dart: | ||||||
|     hosted: https://git.polynom.me/api/packages/PapaTutuWawa/pub |     hosted: https://git.polynom.me/api/packages/PapaTutuWawa/pub | ||||||
|     version: ^0.4.3 |     version: ^0.5.0 | ||||||
|   # [...] |   # [...] | ||||||
| 
 | 
 | ||||||
| # [...] | # [...] | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Contributing | ### Persistence | ||||||
| 
 | 
 | ||||||
| Due to issues with `protobuf`, `omemo_dart` reimplements the Protobuf encoding for the required | By default, `omemo_dart` uses in-memory implementations for everything. For a real-world application, this is unsuitable as OMEMO devices would be constantly added. | ||||||
| OMEMO messages. As such, `protobuf` is only a dependency for testing that the serialisation and | In order to allow persistence, your application needs to keep track of the following mappings: | ||||||
| deserialisation of the custom implementation. In order to run tests, you need the Protbuf | 
 | ||||||
| compiler. After that, making sure that | - `JID -> [int]`: The device list for each JID | ||||||
| the [Dart Protobuf compiler addon](https://pub.dev/packages/protoc_plugin) and the | - `(JID, device) -> Ratchet`: The actual ratchet | ||||||
| Protobuf compiler itself is in your PATH, | 
 | ||||||
| run `protoc -I=./protobuf/ --dart_out=lib/protobuf/ ./protobuf/schema.proto` in the | If you also use the `BlindTrustBeforeVerificationTrustManager`, you additionally need to keep track of: | ||||||
| repository's root to generate the real Protobuf bindings. | 
 | ||||||
|  | - `(JID, device) -> (int, bool)`: The trust level and the enablement state | ||||||
|  | 
 | ||||||
|  | ## Contributing | ||||||
| 
 | 
 | ||||||
| When submitting a PR, please run the linter using `dart analyze` and make sure that all | When submitting a PR, please run the linter using `dart analyze` and make sure that all | ||||||
| tests still pass using `dart test`. | tests still pass using `dart test`. | ||||||
|  | |||||||
| @ -86,9 +86,13 @@ extension BeforeAfterListDiff<T> on List<T> { | |||||||
| 
 | 
 | ||||||
| extension AppendToListOrCreateExtension<K, V> on Map<K, List<V>> { | extension AppendToListOrCreateExtension<K, V> on Map<K, List<V>> { | ||||||
|   /// Create or append [value] to the list identified with key [key]. |   /// Create or append [value] to the list identified with key [key]. | ||||||
|   void appendOrCreate(K key, V value) { |   void appendOrCreate(K key, V value, {bool checkExistence = false}) { | ||||||
|     if (containsKey(key)) { |     if (containsKey(key)) { | ||||||
|       this[key]!.add(value); |       if (!checkExistence) { | ||||||
|  |         this[key]!.add(value); | ||||||
|  |       } if (!this[key]!.contains(value)) { | ||||||
|  |         this[key]!.add(value); | ||||||
|  |       } | ||||||
|     } else { |     } else { | ||||||
|       this[key] = [value]; |       this[key] = [value]; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -132,11 +132,8 @@ class BlindTrustBeforeVerificationTrustManager extends TrustManager { | |||||||
|       enablementCache[key] = true; |       enablementCache[key] = true; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (devices.containsKey(jid)) { |     // Append to the device list | ||||||
|       devices[jid]!.add(deviceId); |     devices.appendOrCreate(jid, deviceId, checkExistence: true); | ||||||
|     } else { |  | ||||||
|       devices[jid] = List<int>.from([deviceId]); |  | ||||||
|     } |  | ||||||
| 
 | 
 | ||||||
|     // Commit the state |     // Commit the state | ||||||
|     await commit( |     await commit( | ||||||
| @ -227,7 +224,7 @@ class BlindTrustBeforeVerificationTrustManager extends TrustManager { | |||||||
|       final key = RatchetMapKey(jid, result.device); |       final key = RatchetMapKey(jid, result.device); | ||||||
|       trustCache[key] = result.state; |       trustCache[key] = result.state; | ||||||
|       enablementCache[key] = result.enabled; |       enablementCache[key] = result.enabled; | ||||||
|       devices.appendOrCreate(jid, result.device); |       devices.appendOrCreate(jid, result.device, checkExistence: true); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user