Skip to content

Commit 21de2e2

Browse files
committed
Merge branch 'release/0.3.6'
2 parents 149a489 + 63b600f commit 21de2e2

File tree

7 files changed

+47
-11
lines changed

7 files changed

+47
-11
lines changed

Adamant/Assets/l18n/en.lproj/Localizable.strings

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@
7979
/* Unknown internal error */
8080
"ApiService.InternalError.UnknownError" = "Unknown error. Report a bug";
8181

82+
/* ChatList: outgoing message preview format, like 'You: %@' */
83+
"ChatListPage.SentMessageFormat" = "You: %@";
84+
8285
/* ChatList: scene title */
8386
"ChatListPage.Title" = "Chats";
8487

Adamant/Assets/l18n/ru.lproj/Localizable.strings

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@
7979
/* Unknown internal error */
8080
"ApiService.InternalError.UnknownError" = "Неизвестная ошибка";
8181

82+
/* ChatList: outgoing message preview format, like 'You: %@' */
83+
"ChatListPage.SentMessageFormat" = "Вы: %@";
84+
8285
/* ChatList: scene title */
8386
"ChatListPage.Title" = "Чаты";
8487

Adamant/CoreData/Chatroom+CoreDataClass.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,17 @@ public class Chatroom: NSManagedObject {
5858
case .orderedDescending:
5959
return false
6060

61+
/// Rare case of identical date, compare IDs
6162
case .orderedSame:
62-
return lhs.height < rhs.height
63+
guard let lid = lhs.transactionId else {
64+
return true
65+
}
66+
67+
guard let hid = rhs.transactionId else {
68+
return false
69+
}
70+
71+
return lid < hid
6372
}
6473
}).last {
6574
if newest != lastTransaction {

Adamant/Info.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<key>CFBundleShortVersionString</key>
2020
<string>0.3.6</string>
2121
<key>CFBundleVersion</key>
22-
<string>22</string>
22+
<string>23</string>
2323
<key>LSRequiresIPhoneOS</key>
2424
<true/>
2525
<key>NSCameraUsageDescription</key>

Adamant/Services/DataProviders/AdamantChatsProvider.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ extension AdamantChatsProvider {
379379
func getChatroomsController() -> NSFetchedResultsController<Chatroom> {
380380
let request: NSFetchRequest<Chatroom> = NSFetchRequest(entityName: Chatroom.entityName)
381381
request.sortDescriptors = [NSSortDescriptor(key: "updatedAt", ascending: false),
382-
NSSortDescriptor(key: "height", ascending: false)]
382+
NSSortDescriptor(key: "transactionId", ascending: false)]
383383
request.predicate = NSPredicate(format: "partner!=nil")
384384
let controller = NSFetchedResultsController(fetchRequest: request, managedObjectContext: stack.container.viewContext, sectionNameKeyPath: nil, cacheName: nil)
385385

@@ -394,7 +394,7 @@ extension AdamantChatsProvider {
394394
let request: NSFetchRequest<ChatTransaction> = NSFetchRequest(entityName: "ChatTransaction")
395395
request.predicate = NSPredicate(format: "chatroom = %@", chatroom)
396396
request.sortDescriptors = [NSSortDescriptor(key: "date", ascending: true),
397-
NSSortDescriptor(key: "height", ascending: true)]
397+
NSSortDescriptor(key: "transactionId", ascending: true)]
398398
let controller = NSFetchedResultsController(fetchRequest: request, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
399399

400400
return controller
@@ -404,7 +404,7 @@ extension AdamantChatsProvider {
404404
let request = NSFetchRequest<ChatTransaction>(entityName: "ChatTransaction")
405405
request.predicate = NSPredicate(format: "isUnread == true")
406406
request.sortDescriptors = [NSSortDescriptor.init(key: "date", ascending: false),
407-
NSSortDescriptor(key: "height", ascending: false)]
407+
NSSortDescriptor(key: "transactionId", ascending: false)]
408408

409409
let controller = NSFetchedResultsController(fetchRequest: request, managedObjectContext: stack.container.viewContext, sectionNameKeyPath: "chatroom.partner.address", cacheName: nil)
410410

Adamant/Services/DataProviders/AdamantTransfersProvider.swift

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,15 +178,17 @@ extension AdamantTransfersProvider {
178178
// MARK: Controllers
179179
func transfersController() -> NSFetchedResultsController<TransferTransaction> {
180180
let request = NSFetchRequest<TransferTransaction>(entityName: TransferTransaction.entityName)
181-
request.sortDescriptors = [NSSortDescriptor(key: "date", ascending: false)]
181+
request.sortDescriptors = [NSSortDescriptor(key: "date", ascending: false),
182+
NSSortDescriptor(key: "transactionId", ascending: false)]
182183
let controller = NSFetchedResultsController(fetchRequest: request, managedObjectContext: stack.container.viewContext, sectionNameKeyPath: nil, cacheName: nil)
183184

184185
return controller
185186
}
186187

187188
func transfersController(for account: CoreDataAccount) -> NSFetchedResultsController<TransferTransaction> {
188189
let request = NSFetchRequest<TransferTransaction>(entityName: TransferTransaction.entityName)
189-
request.sortDescriptors = [NSSortDescriptor(key: "date", ascending:false)]
190+
request.sortDescriptors = [NSSortDescriptor(key: "date", ascending: false),
191+
NSSortDescriptor(key: "transactionId", ascending: false)]
190192
request.predicate = NSPredicate(format: "partner = %@", account)
191193

192194
let controller = NSFetchedResultsController(fetchRequest: request, managedObjectContext: stack.container.viewContext, sectionNameKeyPath: nil, cacheName: nil)
@@ -197,7 +199,8 @@ extension AdamantTransfersProvider {
197199
func unreadTransfersController() -> NSFetchedResultsController<TransferTransaction> {
198200
let request = NSFetchRequest<TransferTransaction>(entityName: TransferTransaction.entityName)
199201
request.predicate = NSPredicate(format: "isUnread == true")
200-
request.sortDescriptors = [NSSortDescriptor(key: "date", ascending: false)]
202+
request.sortDescriptors = [NSSortDescriptor(key: "date", ascending: false),
203+
NSSortDescriptor(key: "transactionId", ascending: false)]
201204
let controller = NSFetchedResultsController(fetchRequest: request, managedObjectContext: stack.container.viewContext, sectionNameKeyPath: nil, cacheName: nil)
202205

203206
return controller

Adamant/Stories/Chats/ChatListViewController.swift

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import CoreData
1212
extension String.adamantLocalized {
1313
struct chatList {
1414
static let title = NSLocalizedString("ChatListPage.Title", comment: "ChatList: scene title")
15+
static let sentMessagePrefix = NSLocalizedString("ChatListPage.SentMessageFormat", comment: "ChatList: outgoing message preview format, like 'You: %@'")
1516

1617
private init() {}
1718
}
@@ -208,12 +209,29 @@ extension ChatListViewController {
208209

209210
switch chatroom.lastTransaction {
210211
case let message as MessageTransaction:
211-
cell.lastMessageLabel.text = message.message
212+
guard let text = message.message else {
213+
cell.lastMessageLabel.text = nil
214+
break
215+
}
216+
217+
if message.isOutgoing {
218+
cell.lastMessageLabel.text = String.localizedStringWithFormat(String.adamantLocalized.chatList.sentMessagePrefix, text)
219+
} else {
220+
cell.lastMessageLabel.text = text
221+
}
212222

213223
case let transfer as TransferTransaction:
214224
if let balance = transfer.amount {
215-
let prefix = transfer.isOutgoing ? "⬅️" : "➡️"
216-
cell.lastMessageLabel.text = "\(prefix) \(AdamantUtilities.format(balance: balance))"
225+
let text: String
226+
if transfer.isOutgoing {
227+
text = String.localizedStringWithFormat(String.adamantLocalized.chatList.sentMessagePrefix, " ⬅️ \(AdamantUtilities.format(balance: balance))")
228+
} else {
229+
text = "➡️ \(AdamantUtilities.format(balance: balance))"
230+
}
231+
232+
cell.lastMessageLabel.text = text
233+
} else {
234+
cell.lastMessageLabel.text = nil
217235
}
218236

219237
default:

0 commit comments

Comments
 (0)