From 6c584043b670b5442821ce0b9b389a5548b66060 Mon Sep 17 00:00:00 2001 From: Jeff Halter <868228+jhalter@users.noreply.github.com> Date: Mon, 29 Apr 2024 12:46:10 -0700 Subject: Fix handling of optional file info fields --- Hotline/Hotline/HotlineClient.swift | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Hotline/Hotline/HotlineClient.swift b/Hotline/Hotline/HotlineClient.swift index 367ed74..5d26953 100644 --- a/Hotline/Hotline/HotlineClient.swift +++ b/Hotline/Hotline/HotlineClient.swift @@ -617,16 +617,22 @@ class HotlineClient: NetSocketDelegate { guard err == nil, let fileName = reply.getField(type: .fileName)?.getString(), let fileCreator = reply.getField(type: .fileCreatorString)?.getString(), - let fileComment = reply.getField(type: .fileComment)?.getString(), - let fileType = reply.getField(type: .fileType)?.getString(), + let fileType = reply.getField(type: .fileTypeString)?.getString(), + let fileTypeString = reply.getField(type: .fileTypeString)?.getString(), let fileCreateDate = reply.getField(type: .fileCreateDate)?.data.readDate(at: 0), - let fileModifyDate = reply.getField(type: .fileModifyDate)?.data.readDate(at: 0), - let fileSizeField = reply.getField(type: .fileSize), - let fileSize = fileSizeField.getInteger() else { + let fileModifyDate = reply.getField(type: .fileModifyDate)?.data.readDate(at: 0) + else { callback?(nil) return } + + // Size field is not included in server reply for folders + let fileSize = reply.getField(type: .fileSize)?.getInteger() ?? 0 + + // Comment field is not included for if no comment present + let fileComment = reply.getField(type: .fileComment)?.getString() ?? "" + callback?(FileDetails(name: fileName, path: filePath, size: fileSize, comment: fileComment, type: fileType, creator: fileCreator, created: fileCreateDate, modified: fileModifyDate)) } -- cgit