移除Message 的 isDeleted 字段

This commit is contained in:
Fin 2024-12-06 14:52:21 +08:00
parent 152c9842f4
commit 59655ca4b8
5 changed files with 23 additions and 32 deletions

View File

@ -14,13 +14,24 @@ let kRealmDefaultConfiguration = {
let fileUrl = groupUrl?.appendingPathComponent("bark.realm")
let config = Realm.Configuration(
fileURL: fileUrl,
schemaVersion: 13,
migrationBlock: { _, oldSchemaVersion in
// We havent migrated anything yet, so oldSchemaVersion == 0
if oldSchemaVersion < 1 {
// Nothing to do!
// Realm will automatically detect new properties and removed properties
// And will update the schema on disk automatically
schemaVersion: 14,
migrationBlock: { migration, oldSchemaVersion in
switch oldSchemaVersion {
case 0...13:
migration.enumerateObjects(ofType: Message.className()) { oldObject, newObject in
guard let obj = oldObject else {
return
}
guard let isDeleted = obj["isDeleted"] as? Bool else {
return
}
// isDeleted
if isDeleted, let newObject {
migration.delete(newObject)
}
}
default:
break
}
}
)

View File

@ -37,7 +37,6 @@ class MessageListViewModel: ViewModel, ViewModelType {
private func getResults(filterGroups: [String?], searchText: String?) -> Results<Message>? {
if let realm = try? Realm() {
var results = realm.objects(Message.self)
.filter("isDeleted != true")
.sorted(byKeyPath: "createDate", ascending: false)
if filterGroups.count > 0 {
results = results.filter("group in %@", filterGroups)
@ -171,10 +170,9 @@ class MessageListViewModel: ViewModel, ViewModelType {
// message
input.itemDelete.drive(onNext: { [weak self] index in
if var section = messagesRelay.value.first {
if let realm = try? Realm() {
if let realm = try? Realm(), let message = self?.results?[index] {
try? realm.write {
let message = self?.results?[index]
message?.isDeleted = true
realm.delete(message)
}
}
section.messages.remove(at: index)
@ -203,17 +201,7 @@ class MessageListViewModel: ViewModel, ViewModelType {
return
}
// 使icecream
//
// try? realm.write {
// for msg in messages {
// msg.isDeleted = true
// }
// }
try? realm.write {
for msg in messages {
msg.isDeleted = true
}
realm.delete(messages)
}
}
@ -227,7 +215,6 @@ class MessageListViewModel: ViewModel, ViewModelType {
let groupFilter = input.groupTap.compactMap { () -> GroupFilterViewModel? in
if let realm = try? Realm() {
let groups = realm.objects(Message.self)
.filter("isDeleted != true")
.distinct(by: ["group"])
.value(forKeyPath: "group") as? [String?]

View File

@ -79,7 +79,6 @@ class MessageSettingsViewModel: ViewModel, ViewModelType {
.map { _ in
if let realm = try? Realm() {
return realm.objects(Message.self)
.filter("isDeleted != true")
.count
}
return 0
@ -204,7 +203,6 @@ class MessageSettingsViewModel: ViewModel, ViewModelType {
.compactMap { _ in
if let realm = try? Realm() {
let messages = realm.objects(Message.self)
.filter("isDeleted != true")
.sorted(byKeyPath: "createDate", ascending: false)
var arr = [[String: AnyObject]]()

View File

@ -17,9 +17,6 @@ class Message: Object {
@objc dynamic var group: String?
@objc dynamic var createDate: Date?
// true IceCream
@objc dynamic var isDeleted = false
override class func primaryKey() -> String? {
return "id"
}

View File

@ -19,7 +19,9 @@ enum MessageListCellDateStyle {
}
class MessageTableViewCellViewModel: ViewModel {
// 使crash
let message: Message
var identity: String
let title: BehaviorRelay<String>
let body: BehaviorRelay<String>
@ -30,7 +32,7 @@ class MessageTableViewCellViewModel: ViewModel {
init(message: Message) {
self.message = message
self.identity = message.id
self.title = BehaviorRelay<String>(value: message.title ?? "")
self.body = BehaviorRelay<String>(value: message.body ?? "")
self.url = BehaviorRelay<String>(value: message.url ?? "")
@ -76,10 +78,6 @@ extension MessageSection: AnimatableSectionModelType {
extension MessageTableViewCellViewModel: IdentifiableType {
typealias Identity = String
var identity: String {
return "\(self.message.id)"
}
override func isEqual(_ object: Any?) -> Bool {
if let obj = object as? MessageTableViewCellViewModel {
// cell12 ...