diff --git a/CHANGELOG.md b/CHANGELOG.md index 1493974..b47cd98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,27 @@ called out explicitly even when nothing else did. release notes, so a version with no entry here does not release. Write the entry in the same PR that syncs the contract, while the diff is still in front of you. +## 0.4.0 + +Synced to [`flipcash2-protobuf-api@0b56e3cd`](https://github.com/code-payments/flipcash2-protobuf-api/commit/0b56e3cd9a9f380f86a09664f09695a2254d7b0a). + +### Added + +- `message_edit_window` and `message_delete_window` on `account.v1.UserFlags`, both + `google.protobuf.Duration`, on fields 17 and 18. Each is the window after a message is created + during which that message can still be edited or deleted. + + They are message-typed, so they carry explicit presence and an unset value is not a zero duration. + Check `hasMessageEditWindow` / `hasMessageDeleteWindow` in Swift, or `hasMessageEditWindow()` in + Kotlin, before reading either one. A server that has not set them leaves them absent, and reading + the field directly would report a zero-length window rather than no configured window. + +### Unchanged + +Nothing existing changed. No services, RPCs, messages, or fields were removed or reshaped, no result +enum gained or reordered a case, and nothing was renumbered: `username_min_balance` keeps field 16, +and every field before it keeps its number. The upgrade from `0.3.0` is free for both languages. + ## 0.3.0 No contract change. `flipcash2.lock` points at the same upstream commit as `0.2.0`, and the generated diff --git a/Sources/Flipcash2ClientProtocol/account_v1_flipcash_account_service.pb.swift b/Sources/Flipcash2ClientProtocol/account_v1_flipcash_account_service.pb.swift index 10519db..0ad6675 100644 --- a/Sources/Flipcash2ClientProtocol/account_v1_flipcash_account_service.pb.swift +++ b/Sources/Flipcash2ClientProtocol/account_v1_flipcash_account_service.pb.swift @@ -496,6 +496,26 @@ public struct Flipcash_Account_V1_UserFlags: @unchecked Sendable { set {_uniqueStorage()._usernameMinBalance = newValue} } + /// Duration after message creation when a message can be edited + public var messageEditWindow: SwiftProtobuf.Google_Protobuf_Duration { + get {return _storage._messageEditWindow ?? SwiftProtobuf.Google_Protobuf_Duration()} + set {_uniqueStorage()._messageEditWindow = newValue} + } + /// Returns true if `messageEditWindow` has been explicitly set. + public var hasMessageEditWindow: Bool {return _storage._messageEditWindow != nil} + /// Clears the value of `messageEditWindow`. Subsequent reads from it will return its default value. + public mutating func clearMessageEditWindow() {_uniqueStorage()._messageEditWindow = nil} + + /// Duration after message creation when a message can be deleted + public var messageDeleteWindow: SwiftProtobuf.Google_Protobuf_Duration { + get {return _storage._messageDeleteWindow ?? SwiftProtobuf.Google_Protobuf_Duration()} + set {_uniqueStorage()._messageDeleteWindow = newValue} + } + /// Returns true if `messageDeleteWindow` has been explicitly set. + public var hasMessageDeleteWindow: Bool {return _storage._messageDeleteWindow != nil} + /// Clears the value of `messageDeleteWindow`. Subsequent reads from it will return its default value. + public mutating func clearMessageDeleteWindow() {_uniqueStorage()._messageDeleteWindow = nil} + public var unknownFields = SwiftProtobuf.UnknownStorage() public enum OnRampProvider: SwiftProtobuf.Enum, Swift.CaseIterable { @@ -976,7 +996,7 @@ extension Flipcash_Account_V1_GetUnauthenticatedUserFlagsResponse.Result: SwiftP extension Flipcash_Account_V1_UserFlags: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { public static let protoMessageName: String = _protobuf_package + ".UserFlags" - public static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}is_registered_account\0\u{3}is_staff\0\u{3}requires_iap_for_registration\0\u{3}supported_on_ramp_providers\0\u{3}preferred_on_ramp_provider\0\u{3}min_build_number\0\u{3}bill_exchange_data_timeout\0\u{3}new_currency_purchase_amount\0\u{3}new_currency_fee_amount\0\u{3}withdrawal_fee_amount\0\u{3}preferred_on_ramp_usdc_liquidity_pool\0\u{3}enable_phone_number_send\0\u{3}minimum_holder_value\0\u{3}require_coinbase_email_verification\0\u{3}tip_presets\0\u{3}username_min_balance\0") + public static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}is_registered_account\0\u{3}is_staff\0\u{3}requires_iap_for_registration\0\u{3}supported_on_ramp_providers\0\u{3}preferred_on_ramp_provider\0\u{3}min_build_number\0\u{3}bill_exchange_data_timeout\0\u{3}new_currency_purchase_amount\0\u{3}new_currency_fee_amount\0\u{3}withdrawal_fee_amount\0\u{3}preferred_on_ramp_usdc_liquidity_pool\0\u{3}enable_phone_number_send\0\u{3}minimum_holder_value\0\u{3}require_coinbase_email_verification\0\u{3}tip_presets\0\u{3}username_min_balance\0\u{3}message_edit_window\0\u{3}message_delete_window\0") fileprivate class _StorageClass { var _isRegisteredAccount: Bool = false @@ -995,6 +1015,8 @@ extension Flipcash_Account_V1_UserFlags: SwiftProtobuf.Message, SwiftProtobuf._M var _requireCoinbaseEmailVerification: Bool = false var _tipPresets: [Flipcash_Account_V1_TipPresets] = [] var _usernameMinBalance: UInt64 = 0 + var _messageEditWindow: SwiftProtobuf.Google_Protobuf_Duration? = nil + var _messageDeleteWindow: SwiftProtobuf.Google_Protobuf_Duration? = nil // This property is used as the initial default value for new instances of the type. // The type itself is protecting the reference to its storage via CoW semantics. @@ -1021,6 +1043,8 @@ extension Flipcash_Account_V1_UserFlags: SwiftProtobuf.Message, SwiftProtobuf._M _requireCoinbaseEmailVerification = source._requireCoinbaseEmailVerification _tipPresets = source._tipPresets _usernameMinBalance = source._usernameMinBalance + _messageEditWindow = source._messageEditWindow + _messageDeleteWindow = source._messageDeleteWindow } } @@ -1055,6 +1079,8 @@ extension Flipcash_Account_V1_UserFlags: SwiftProtobuf.Message, SwiftProtobuf._M case 14: try { try decoder.decodeSingularBoolField(value: &_storage._requireCoinbaseEmailVerification) }() case 15: try { try decoder.decodeRepeatedMessageField(value: &_storage._tipPresets) }() case 16: try { try decoder.decodeSingularUInt64Field(value: &_storage._usernameMinBalance) }() + case 17: try { try decoder.decodeSingularMessageField(value: &_storage._messageEditWindow) }() + case 18: try { try decoder.decodeSingularMessageField(value: &_storage._messageDeleteWindow) }() default: break } } @@ -1115,6 +1141,12 @@ extension Flipcash_Account_V1_UserFlags: SwiftProtobuf.Message, SwiftProtobuf._M if _storage._usernameMinBalance != 0 { try visitor.visitSingularUInt64Field(value: _storage._usernameMinBalance, fieldNumber: 16) } + try { if let v = _storage._messageEditWindow { + try visitor.visitSingularMessageField(value: v, fieldNumber: 17) + } }() + try { if let v = _storage._messageDeleteWindow { + try visitor.visitSingularMessageField(value: v, fieldNumber: 18) + } }() } try unknownFields.traverse(visitor: &visitor) } @@ -1140,6 +1172,8 @@ extension Flipcash_Account_V1_UserFlags: SwiftProtobuf.Message, SwiftProtobuf._M if _storage._requireCoinbaseEmailVerification != rhs_storage._requireCoinbaseEmailVerification {return false} if _storage._tipPresets != rhs_storage._tipPresets {return false} if _storage._usernameMinBalance != rhs_storage._usernameMinBalance {return false} + if _storage._messageEditWindow != rhs_storage._messageEditWindow {return false} + if _storage._messageDeleteWindow != rhs_storage._messageDeleteWindow {return false} return true } if !storagesAreEqual {return false} diff --git a/flipcash2.lock b/flipcash2.lock index 6f4fdf8..d07c9ab 100644 --- a/flipcash2.lock +++ b/flipcash2.lock @@ -1,4 +1,4 @@ # Pinned upstream contract. Regenerate with scripts/sync-protos.sh . upstream: code-payments/flipcash2-protobuf-api -commit: 0300d252f35f3524e067aeef22382012c754902a -subject: Add the ability to set a minimum DM initialization fee (#88) +commit: 0b56e3cd9a9f380f86a09664f09695a2254d7b0a +subject: Add message_{edit,delete}_window to UserFlags (#89) diff --git a/proto/account/v1/flipcash_account_service.proto b/proto/account/v1/flipcash_account_service.proto index 387a03d..4576274 100644 --- a/proto/account/v1/flipcash_account_service.proto +++ b/proto/account/v1/flipcash_account_service.proto @@ -172,6 +172,12 @@ message UserFlags { // USDF amount, in quarks, that must be held across all currencies in order to set a username uint64 username_min_balance = 16; + + // Duration after message creation when a message can be edited + google.protobuf.Duration message_edit_window = 17; + + // Duration after message creation when a message can be deleted + google.protobuf.Duration message_delete_window = 18; } message TipPresets {