Browse Source

Detailed bug reports.

pull/101/head
Abhishek 3 years ago
parent
commit
fb3db3e9f6
  1. 55
      Clocker/Preferences/App Feedback/AppFeedbackWindowController.swift
  2. 2
      Clocker/Preferences/Menu Bar/StatusItemHandler.swift

55
Clocker/Preferences/App Feedback/AppFeedbackWindowController.swift

@ -2,6 +2,7 @@
import Cocoa import Cocoa
import CoreLoggerKit import CoreLoggerKit
import CoreModelKit
import FirebaseDatabase import FirebaseDatabase
extension NSNib.Name { extension NSNib.Name {
@ -24,6 +25,7 @@ enum AppFeedbackConstants {
static let CLFeedbackAlertButtonTitle = "Close" static let CLFeedbackAlertButtonTitle = "Close"
static let CLFeedbackNotEnteredErrorMessage = "Please enter some feedback." static let CLFeedbackNotEnteredErrorMessage = "Please enter some feedback."
static let CLAppFeedbackDateProperty = "date" static let CLAppFeedbackDateProperty = "date"
static let CLAppFeedbackUserPreferences = "Prefs"
static let CLCaliforniaTimezoneIdentifier = "America/Los_Angeles" static let CLCaliforniaTimezoneIdentifier = "America/Los_Angeles"
} }
@ -111,6 +113,8 @@ class AppFeedbackWindowController: NSWindowController {
} }
let feedbackInfo = retrieveDataForSending() let feedbackInfo = retrieveDataForSending()
Logger.info("About to send \(feedbackInfo)")
sendDataToFirebase(feedbackInfo: feedbackInfo) sendDataToFirebase(feedbackInfo: feedbackInfo)
showSucccessOnSendingInfo() showSucccessOnSendingInfo()
} }
@ -130,6 +134,52 @@ class AppFeedbackWindowController: NSWindowController {
return true return true
} }
private func generateUserPreferences() -> String {
let preferences = DataStore.shared().timezones()
guard let theme = DataStore.shared().retrieve(key: CLThemeKey) as? NSNumber,
let displayFutureSliderKey = DataStore.shared().retrieve(key: CLThemeKey) as? NSNumber,
let relativeDateKey = DataStore.shared().retrieve(key: CLRelativeDateKey) as? NSNumber,
let country = Locale.autoupdatingCurrent.regionCode
else {
return "Error"
}
let selectedTimezones = preferences.compactMap { data -> String? in
guard let timezoneObject = TimezoneData.customObject(from: data) else {
return nil
}
return "Timezone: \(timezoneObject.timezone()) Name: \(timezoneObject.formattedAddress ?? "No") Favourited: \((timezoneObject.isFavourite == 1) ? "Yes": "No") Note: \(timezoneObject.note ?? "No Note") System: \(timezoneObject.isSystemTimezone ? "Yes": "No")"
}
var relativeDate = "Relative"
if relativeDateKey.isEqual(to: NSNumber(value: 1)) {
relativeDate = "Actual Day"
} else if relativeDateKey.isEqual(to: NSNumber(value: 2)) {
relativeDate = "Date"
}
var themeInfo = "Light"
if theme.isEqual(to: NSNumber(value: 1)) {
themeInfo = "Dark"
} else if theme.isEqual(to: NSNumber(value: 2)) {
themeInfo = "System"
}
var futureSlider = "Modern"
if displayFutureSliderKey.isEqual(to: NSNumber(value: 1)) {
futureSlider = "Legacy"
} else if theme.isEqual(to: NSNumber(value: 2)) {
futureSlider = "Hidden"
}
return """
"Theme: \(themeInfo), "Display Future Slider": \(futureSlider), "Relative Date": \(relativeDate), "Country": \(country), "Timezones": \(selectedTimezones)
"""
}
private func retrieveDataForSending() -> [String: String] { private func retrieveDataForSending() -> [String: String] {
guard let shortVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String, guard let shortVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String,
@ -145,16 +195,15 @@ class AppFeedbackWindowController: NSWindowController {
let osVersion = "\(operatingSystem.majorVersion).\(operatingSystem.minorVersion).\(operatingSystem.patchVersion)" let osVersion = "\(operatingSystem.majorVersion).\(operatingSystem.minorVersion).\(operatingSystem.patchVersion)"
let versionInfo = "Clocker \(shortVersion) (\(appVersion))" let versionInfo = "Clocker \(shortVersion) (\(appVersion))"
let feedbackInfo = [ return [
AppFeedbackConstants.CLAppFeedbackNameProperty: name, AppFeedbackConstants.CLAppFeedbackNameProperty: name,
AppFeedbackConstants.CLAppFeedbackEmailProperty: email, AppFeedbackConstants.CLAppFeedbackEmailProperty: email,
AppFeedbackConstants.CLAppFeedbackFeedbackProperty: appFeedbackProperty, AppFeedbackConstants.CLAppFeedbackFeedbackProperty: appFeedbackProperty,
AppFeedbackConstants.CLOperatingSystemVersion: osVersion, AppFeedbackConstants.CLOperatingSystemVersion: osVersion,
AppFeedbackConstants.CLClockerVersion: versionInfo, AppFeedbackConstants.CLClockerVersion: versionInfo,
AppFeedbackConstants.CLAppFeedbackDateProperty: todaysDate(), AppFeedbackConstants.CLAppFeedbackDateProperty: todaysDate(),
AppFeedbackConstants.CLAppFeedbackUserPreferences: generateUserPreferences(),
] ]
return feedbackInfo
} }
private func todaysDate() -> String { private func todaysDate() -> String {

2
Clocker/Preferences/Menu Bar/StatusItemHandler.swift

@ -32,7 +32,7 @@ class StatusItemHandler: NSObject {
private var userNotificationsDidChangeNotif: NSObjectProtocol? private var userNotificationsDidChangeNotif: NSObjectProtocol?
// Current State is set twice when the user first launches an app. // Current State might be set twice when the user first launches an app.
// First, when StatusItemHandler() is instantiated in AppDelegate // First, when StatusItemHandler() is instantiated in AppDelegate
// Second, when AppDelegate.fetchLocalTimezone() is called triggering a customLabel didSet. // Second, when AppDelegate.fetchLocalTimezone() is called triggering a customLabel didSet.
// TODO: Make sure it's set just once. // TODO: Make sure it's set just once.

Loading…
Cancel
Save