diff --git a/ownCloud.xcodeproj/project.pbxproj b/ownCloud.xcodeproj/project.pbxproj index 3d3e8f375..6dc4316a3 100644 --- a/ownCloud.xcodeproj/project.pbxproj +++ b/ownCloud.xcodeproj/project.pbxproj @@ -42,8 +42,8 @@ 394E1FFF233E43F5009D2897 /* LinksAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 394E1FFE233E43F5009D2897 /* LinksAction.swift */; }; 394E200C233E477F009D2897 /* OpenItemUserActivity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 394E200B233E477F009D2897 /* OpenItemUserActivity.swift */; }; 39607CBC2225D480007B386D /* UITableViewController+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39607CBB2225D480007B386D /* UITableViewController+Extension.swift */; }; - 3968C881239C54AC00AC28AC /* ReleaseNotesHostViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3968C879239C54AC00AC28AC /* ReleaseNotesHostViewController.swift */; }; 3961281622F8730A0087BD3A /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3961281522F8730A0087BD3A /* SceneDelegate.swift */; }; + 3968C881239C54AC00AC28AC /* ReleaseNotesHostViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3968C879239C54AC00AC28AC /* ReleaseNotesHostViewController.swift */; }; 3968C882239C54AD00AC28AC /* ReleaseNotesTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3968C87A239C54AC00AC28AC /* ReleaseNotesTableViewController.swift */; }; 3968C883239C54AD00AC28AC /* ReleaseNotes.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3968C87B239C54AC00AC28AC /* ReleaseNotes.plist */; }; 396BE4C32288A84C00B254A9 /* PendingSharesTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 396BE4C22288A84C00B254A9 /* PendingSharesTableViewController.swift */; }; @@ -639,8 +639,8 @@ 394E1FFE233E43F5009D2897 /* LinksAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LinksAction.swift; sourceTree = ""; }; 394E200B233E477F009D2897 /* OpenItemUserActivity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenItemUserActivity.swift; sourceTree = ""; }; 39607CBB2225D480007B386D /* UITableViewController+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITableViewController+Extension.swift"; sourceTree = ""; }; - 3968C879239C54AC00AC28AC /* ReleaseNotesHostViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReleaseNotesHostViewController.swift; sourceTree = ""; }; 3961281522F8730A0087BD3A /* SceneDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 3968C879239C54AC00AC28AC /* ReleaseNotesHostViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReleaseNotesHostViewController.swift; sourceTree = ""; }; 3968C87A239C54AC00AC28AC /* ReleaseNotesTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReleaseNotesTableViewController.swift; sourceTree = ""; }; 3968C87B239C54AC00AC28AC /* ReleaseNotes.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = ReleaseNotes.plist; sourceTree = ""; }; 396BE4C22288A84C00B254A9 /* PendingSharesTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PendingSharesTableViewController.swift; sourceTree = ""; }; @@ -1230,22 +1230,22 @@ path = Library; sourceTree = ""; }; - 3968C878239C54AC00AC28AC /* Release Notes */ = { + 394E2005233E4765009D2897 /* Window */ = { isa = PBXGroup; children = ( - 3968C879239C54AC00AC28AC /* ReleaseNotesHostViewController.swift */, - 3968C87A239C54AC00AC28AC /* ReleaseNotesTableViewController.swift */, - 3968C87B239C54AC00AC28AC /* ReleaseNotes.plist */, + 394E200B233E477F009D2897 /* OpenItemUserActivity.swift */, ); - path = "Release Notes"; + path = Window; sourceTree = ""; }; - 394E2005233E4765009D2897 /* Window */ = { + 3968C878239C54AC00AC28AC /* Release Notes */ = { isa = PBXGroup; children = ( - 394E200B233E477F009D2897 /* OpenItemUserActivity.swift */, + 3968C879239C54AC00AC28AC /* ReleaseNotesHostViewController.swift */, + 3968C87A239C54AC00AC28AC /* ReleaseNotesTableViewController.swift */, + 3968C87B239C54AC00AC28AC /* ReleaseNotes.plist */, ); - path = Window; + path = "Release Notes"; sourceTree = ""; }; 39E42D152315286300B82AC3 /* Key Commands */ = { @@ -2635,7 +2635,6 @@ 39CC8AE6228C12100020253B /* Array+Extension.swift in Sources */, 6E83C78420A33C180066EC23 /* LAContext+Extension.swift in Sources */, 593BAB46209AE1BC00023634 /* PasscodeViewController.swift in Sources */, - 397328EF22D606AC006CFAA4 /* ImportFilesController.swift in Sources */, 3968C881239C54AC00AC28AC /* ReleaseNotesHostViewController.swift in Sources */, DC6428D02081406800493A01 /* CollapsibleProgressBar.swift in Sources */, DCB44D87218718BA00DAA4CC /* VendorServices.swift in Sources */, @@ -3144,6 +3143,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + APP_SHORT_VERSION = 1.1.2; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = ownCloud/ownCloud.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; @@ -3172,6 +3172,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + APP_SHORT_VERSION = 1.1.2; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = ownCloud/ownCloud.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; diff --git a/ownCloud/Release Notes/ReleaseNotes.plist b/ownCloud/Release Notes/ReleaseNotes.plist index 5ca81c612..ed823e81c 100644 --- a/ownCloud/Release Notes/ReleaseNotes.plist +++ b/ownCloud/Release Notes/ReleaseNotes.plist @@ -19,16 +19,6 @@ ImageData iVBORw0KGgoAAAANSUhEUgAAAD0AAAAtCAYAAAAdtGNyAAAAAXNSR0IArs4c6QAAAHhlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAABYMMAAATdwACZakAAAhkAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAD2gAwAEAAAAAQAAAC0AAAAA5nzNHQAAAAlwSFlzAAALJgAACz8BbRxhqAAAAfVJREFUaAXtmrtLA0EQh+MDxU5UtNJCbbWxEERELbS1FwVBsBJt7MTORvBfEFTsROwFI1gJgig22qQQBAshCr7A1zfFwsHtXbLhArubHfjYy97OMDO/3N1ySS4XLHQgdMCnDtSVKKaL8yswBT3QAjbaL0kV4QZ24RASLa3oQbxO4Bx24B7ewUarJ6kOGIc1yMMc/EHZJs24hfWyPexZ2EkqBVg0TWkUhwdoMHW0ZP0seVya5rKKw56pk0Xr28nlG7SiybWgszYmn3QnHJl7Jk+5ubXq8k0qWjr0o3NwaE7yN1LaodrMU01S2jySQx41WXRjikDyrNZeEyk+Tp/aJHvZzbiObFRilqb0Nqs3Yh7ZTMjmZwtGsgmnjSKPLa2lFS0P92rttT+JLd+iasXXFqsma/JGFopW8vs+BqV9V1jVF5RWnfB9DEr7rrCqLyitOuH7GJT2XWFVX1BadcL3MSjtu8KqvqC06gTjFzRHPrt2KGI2gbyWilmS0o+s7Iutdmeil1Tl/durLuWkos9YPAnaV6i6QJbNzZPPaSU5HeCUB+0vf5UEjPiMcXwV+Zzl4QzB3mA4KWjaK+AlnPahAEdwBx+QhfUTRP4usZxFMGLIN1biTcAALMAFaE1+uillQyyYhm6w+Y82L+R3DcdQhGChA7XYgX9hgGiYoQX/TgAAAABJRU5ErkJggg== - - Title - Keyboard Commands - Subtitle - On iPadOS you can control the app with a hardware keyboard. Long press the command key to see all available actions. These actions can change, if an item is selected or not. - Type - New - ImageData - iVBORw0KGgoAAAANSUhEUgAAAEYAAAAiCAYAAADiS6/IAAAAAXNSR0IArs4c6QAAAHhlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAABIF7AAAQAAAMCmQAACoDAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAEagAwAEAAAAAQAAACIAAAAAZ/XYJwAAAAlwSFlzAAALFgAAC0kBEAO4dQAAA9ZJREFUaAXtmUtsTVEUhktQ1VQ8y4BWSDziHSEmBgZMRCQkiKQSMSExFmJk0ATBkIkBSUOFATHQeEyISTvRkHqVNE1oEY8qbeL9/cnZsbq7z809p7fiHvdP/py919prP9bZZ6297y0rKyHogRFB6R/hSIqb4HpYAytgseIXE/8CX8Br8DaMRS7HVGOlDibBBvgU9sFiRhWTXwrrYAvcCvthIjTRuhGOSWRVHI0nMM178HTS6S7C4AOUh7OK2SxMu2VyaIGKISGsQXgL9oaUGZEp1jyAq0PriXPMNBp3hgwyJutgPdNDa4pzzGgafwsZZEz2lfUEY2icY3KtX5lMO0pZK4Q4ncaSbkrAqByZ3pyCog9NPE5XGenG+0bUFR9ll+qIkcYxGxmsG76G26DFHipOpzhlcYiKdG/hfKugfBx2wffQd9z5SCe9f7y4HunaePpoRiAbZZ/ESOOYcWYUvTELW7ft1CaXzrXVwv037OzGovPn6+zcU+M4OJmzd/K8nqPyajWwUSvVRqiTZPNAVdldo3vs6ZTlauEP2AEtmqhoATpAvrEKypdhD/wIZWuhebTDTiuMyud4zoX3A7rUonosj6S2Lh5Dnej3hqbrb81Qm/9SVnJMzGtPE2N0xpkHFWOewO/QQalV37V0ijE2Jiiozolkj3haKE3PhIoxz62C8kQ4A7qbsVUrHU+FikF+nJGNbBWzlEELglwxZjMjaOHiDm+0fUa31tMdNrqFnu6U0VV7uiuRTocxZS0LpWLNQ2nZxzME0rX6ClMvaIzRrnAod4Xoaeu2ndRWZ8v56rRTfce4fvyx1KeTuTaS5Y00n1ILvZ+Aeht6YxY3qUgn6IJmcZWKFqfPSxc4i0tUlI77oZ+uzyBrg5/hT2ihnabd122FUVnzqIX63AuGenoqpeuCuTNDHZXSdczLTBNjKulrFVSMUbxRGnXQLXcF9IOk0w/XU5dP/+i/BJkupK+gfz1BlBtpHLOBLi9G3e7ieTYq67EbnjT1v1V8x0D+rVzBfhaUUxbAREjzKdndYMsa2K8nmswQGofGdTL3TNR9mh1zhxEOQH1KN7zRdBhTSk41Ga+vJFV9Lj4OIkidrtM4posBj/qziOo6n8TpYkyGTXxhKD2n+ZSGMt6/ZqudrZ0/CHGO0SmzalDr7Am0Rq11EOIcoxuu/srMMrRblsP2JIvU/9Xy5MokRkXWdjvz7YSJ4+x+jF7CdTBL0FeyE36CW+IWlstbxzDqhQ1Qv4XoltoHixmKKYthD6yDOgQGkc95Q85bBmtgRbCX4hAq+7hfAR9SDmYjt5TfSE6nAoZwo80AAAAASUVORK5CYII= - Title Media Player Improvements @@ -49,16 +39,6 @@ ImageData iVBORw0KGgoAAAANSUhEUgAAAD0AAAAtCAYAAAAdtGNyAAAAAXNSR0IArs4c6QAAAHhlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAABYMMAAATdwACZakAAAhkAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAD2gAwAEAAAAAQAAAC0AAAAA5nzNHQAAAAlwSFlzAAALJgAACz8BbRxhqAAAA3ZJREFUaAXtmluITVEYx4cRyW0at8h4kDwQL4QH6lDGm0gpacqDKC9ueZuUB+WB8qJ4oIxGCPGkkBHxgBeXB0m5TIkyNZRL7r9/c3ad9t5rr7X23nNmb85Xv/Y5a33ft75v3c+eaWpqSKMHGj3wL/XAMEsyU6nfAe0wE0ZDEeU3QfXDYzgFF8AoSUkvwOo63IGT8By+QBFlOEFNggrshR7ogD/gLOqMp9DpbFEcxSmE8hK2+Ia0DINeaPY1LIj+JuJ46BvLTgy6fI0KpD+RWH5C7KBpLcRJK4Xv4ypKUtZHnNrcWuLiNSWtHvoVZ1CiMsXvNdIlys0/VNNI+3sqkUWeSVfI+wzogvAADsMMKI0cINKDHtEqQV0EwnyibJWHnzxVv+JMZ3ZE8hjpbXjdHfE8UDCOx0VoM9QPSXHWpHVz22eJXImbOsViOjjVWZOeQ1jTHUKrOOjUTSVr0mMcI3XVc3SXTS1r0i9o/odDCM8cdOqmkjVp7c7aqGxywqZQz/qsSSvWXfA6IejT1F1JqK97VR5JvyPqpaAR1yU/EM2CTtgcFDg+9QtpLmjXr6v4Xk6C4PT2YjkshlFBoeNzNnpXQR2nS8530CxxOR1Qi4jxchLRrBakTdrkz1a+EgW94wrf6PS9D1aArxiTzmN6+wYT1t9IgUZ4Qrii+r21Wr/eUO9dPNRJ7yHibhhpiVxL5TzoyptZ8khaI6TR8BG1ewQOga6yLiKbY2C79lp9ZUl6Ft6vgdai1t190AZmE43aWdD79DSyH6OjkCX22HZtG9kirD5AeOP5Rtm6WI8DhZoVtyBsl+b7OfwkLQvjRoZdrCQlrSPpI5gC1VvIjhiveqHwJMHO5C+p/Ab+TOd5bkm308hnh8B11m6HQObxoReSEkhbp/fbk4OGap7GpEfUKNk+rkXBNqUCH9qctO7Gwz3QNbQFBkMW4vQuaEBeQWoJT2/9xUC/ptKMhqZ7Gjtfm7e0Mx8CMY60yw64FS9d4DMrgob1bK79Moifp+H7NmjPSRRb0ro8HAebXmIjdazUEtIxuiZNm7oAvAHfKVYUfS0pbabaUyJiGkGtj7aIdnkKtKR0yujnbURMSfegqVErs9xME3w3RkWZrr5x6KRZkibpsRhdKmHiui1uSErY5ReODv/VoDVe5H+0UbKP4DL0Q0MaPfA/9sBfxCR9OVqwnVoAAAAASUVORK5CYII= - - Title - In-App Release Notes - Subtitle - Show all new features and fixes after an update to the user. - Type - New - ImageData - iVBORw0KGgoAAAANSUhEUgAAADUAAAAfCAYAAABH0YUgAAAAAXNSR0IArs4c6QAAAHhlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAABK8DAAAQXQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAADWgAwAEAAAAAQAAAB8AAAAAxZI1qAAAAAlwSFlzAAALRQAACxMB2k138gAAAXJJREFUWAntmM0qRVEUx3GVjygMKBmReAYZKQ+glPIAysDIxGPIjHdgqKQkxVCGylgGykRE8vH7q12rc8+63cnptE9r1a/933utu+9aq1Nnn93q8W0Q1zL0w4sflo9njFTv4Re+YRuysV4n0x3WD4zvGT1p5knOIxTr7ZPiqhiP2fSybGM9WmX2VVgszpP7A/EEdRT1mpLodhwm8Ab0+CnxDWiE9VHFAow3opooIjoQHYgORAea1oE1CjqBfZhoQnFLFPEDOlGIU/BMR6Q68PJx1/fwpII0vjmRK4U4+5uq9a6T0/+3UplP5z5r13Zi9AV6BOo40HqNNum1y02WzuAIptrdsRIdiA5EB6ID0YHKO9Dq8A96oc6C7v0+O8Rl4xoi0yvQUecd1iEb8443W1RwaKp4RM+YeZLTCJ08vH1SXBXjOZvelW3sXWbqHt3agJ0YPYqegzqKujV5dCX1/fQAevz0CaKr5UaYbmlXYTG3av4AOqxMfQL52RcAAAAASUVORK5CYII= - Title Fix: Sort alphabetically @@ -111,6 +91,43 @@ + + Version + 1.3.0 + ReleaseNotes + + + Title + Document Scanner + Subtitle + Scan your documents directly into your ownCloud. You do not longer need a third party app or import scanned documents. Our ownCloud app has an integrated document scanner. Tap on the "+" button to start your scan! + Type + New + ImageData + iVBORw0KGgoAAAANSUhEUgAAADEAAAAsCAYAAADM1FBZAAAAAXNSR0IArs4c6QAAAHhlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAACTAAAAAgADHvMAAArkAAOgAQADAAAAAQABAACgAgAEAAAAAQAAADGgAwAEAAAAAQAAACwAAAAAbTe5pQAAAAlwSFlzAAALTgAAC0gB6cUDrgAAAqdJREFUaAXtmb1rFUEUxaNRMX5HiBJBMYiIiAhpxNIQQsDK2sLKQkRBEaxsUomFiGDs8h8EazGNiJ1gI0i0UwzEryiKEcWP3xELi3sWZ3bee7LshZMH5865d+7MzszupK+vtXYEio3Ain+MtJJ2g2DAtF+E/2Z8jl6NY7txLsMvgR/Gn0SP0vo2+Ai+gg8GZ+FT7RwCF0+5lHMWHALZNonyE5gCI9lR8oV7kV4F6sN4Tpg1iF6CEzniwppTxHsB9PglmWbhSZKic421bp+BCZdCCzayg5APIkcPuJ/kvA/Up9BcEZtp/TZU9IZ8Q9otLvUq49AUagQik0+7xlHQHzXI4L6juQeOgyivOOUNzRURNv5D7uBXa2Yf0DZYwjYRZB4Mg4XUgDlFaOf6DLRjlLL3BFJMxU42tyaSA/VS0Igi3OOkdyG7kIJRPw83GPBV1Duc16sa/OVTf/QqEpor4kbY2pOKk7pTudxRlmsRWYcbQax9u7TpXNqdE7TRayJ1QIYQrDcinSUdPf1TnkvTx9/0HH+3mQZ6kRwzviJ0qSJqfbjUraQRa6Itou5jUErfzkSpkawbp9EzoYPLHV51By5HvwHROid0M3ERwSUn6gGvvqhPobnDTl9YqW+lYYJCpPpjPw3cTBTK3Z0wjSjCPU5VQ6i70Y3gJNDHfQnTJqKYip1sOUW8JssFcAyUWje6d1LMrI8tV4SCVl2f3MQvdMvUzy8umVsT+ojRRdb/YrqwS56lI4gWQPJ1egeqXkvMV+BwamztyY/AlVRhB9rr5uVhVVx7gCDaD+6Cx2AG6K7U7Ua60rTPLL7INMI7IwecXjEOAP2DZQ8YB09BaFVFSLAVnAYTYBcYAJFNQU5HjgruDL7LgV834MvgObgDbgHd1bbWjkA3RuAXSxthkFuX+eQAAAAASUVORK5CYII= + + + Title + Shortcut Support + Subtitle + On iOS 13 you get great Shortcut support. We have added multiple action, to build your own scripts and automation for your ownCloud. + Type + New + ImageData + iVBORw0KGgoAAAANSUhEUgAAADoAAABKCAYAAADqmUfpAAAAAXNSR0IArs4c6QAAAHhlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAACL1OAAAe2QADfXkAAAxiAAOgAQADAAAAAQABAACgAgAEAAAAAQAAADqgAwAEAAAAAQAAAEoAAAAAQdNw6AAAAAlwSFlzAAALJwAACxkBZZ4xKQAABGFJREFUeAHtmVmoj1sYxs0cwxHKEMnQoWOKnJMy7dqGC5KUk5IhF4criVK4kHDFyYULcWMqhS0XppBhJ7kgTmkTkThnZziOcwwZMv+eWLX2sva3rf+mb3279daz1/Su7/887/rW8K3dqFGyFIEUgRSBFIEUgRSBFIEUgRSBhhmBxpHK6gSvMjAIdAZNwCNwHZwFt0GhbQzsD4O34EMGLtI2DzQDhbIfYbsLZInztVXR55eiKO0KURH2Cfmautf0nR272PYQvFwPkSYQ73nGjCyxmuR52mZ+fPA3IFDNM0aBKBfXCRAzIxKaPqXvAbAQ9AdRWyXsQgQ+wX8dGA0Ks9r2DBT5H/59QMmW1xwtD2SsredWYJ8a7nkJHVKDRd0Fzcl6WV5CewSyHh7o/4V7XkJ1lg2xMpx/COng+uYltKNLxCrfJ685edCqa0W+3CoHZ/MSqrOtbecpLAGau73BVvAG2DbZLnjyCob2Zm1BOvDXsLz2I1foIVg1BX8AfcHoNX0GbJtkF8jrFDQMSNx4oP1VYmVzPyX5/m3Oz+ts6h4WXlB3HCwFQ0FLcA3YfgMprwfngL5P7TaT1ydeN5C7iawhZVJ9UGsUB4BFQPNTI2raTaog/O6pN+1Kj4IobAEsbGLKa4T//VyvuXkWrAJrge1bSbm7U2e3Kz8WRGGnYeGSU1k3C1NAO6AFaT6oBLavgqBPu0tOvfHZTX0UNhIWhpSbVtCmz7abGT7qMx2s8fhcpU5ByN3awuAKcAWGlrfxjBHOc+5Q1luQu2kFPQJCRfn87/McbUX/fH7eeVLN29xNe+Zp4CNdap0uxPSarwYtQO6mw/ufoFRBbj+tznreOBBkOl18LyvjwXuBLqBD7ALOJ8AN8BC8Ai/B/0Bz8TmIwhQ8bezaCtwRySprrumVLIR1haWOcVmCfG076aOjYSFsGizNSugTU1vdHvrl9RUVFFht0jtAbUKy6o/RL4pVsy7F+kT6q0SRWj3b1PUDebe3hsAm4PvcyhpB06bVtBeI2n6FnT6rDOnQVKtxecwKtW0sA6HbhhuIFTGL7AA5fQy7pEPLJ3lGtCtsP8jplBIqyvXXvIziigMeX5hu5UrZG12RKmufjdK6w6oauKR11gxdbbfTJ1o7BTMj8jX5lcC8errumAPuAuNTW3oHH/d6k6o4bCo0DHGNnu5yfKZR/xsYXzdV36i3EnuFrfAptOpmZgjdaPlFmX1skZeQLNMxzh1JlXVZVa9/DGX96Ldoc4nrPFuXaQ7bYlXWvwuiMd/m/QJ2Ov0Y+8lkakn7Uu9+Sy6nTof26O0MDM0IibAvIEbEBstXffabhiKk8xzyWyg38xD/jbp3lu818u09ftFW6d70AjCjqrQKLAaTwCywD2j7MD73yPcBhTNdVfpORkaYnd7G9+fCKbQIS6w7srZA5Q+DLlafwma1EM0Fp4DuVyXuAagAE0GDNXcrabBCk7AUgRSBFIEUgRSBFIEUgRSBQkfgI4TsZy0UEI/OAAAAAElFTkSuQmCC + + + Title + In-App Release Notes + Subtitle + Show all new features and fixes after an update to the user. + Type + New + ImageData + iVBORw0KGgoAAAANSUhEUgAAADUAAAAfCAYAAABH0YUgAAAAAXNSR0IArs4c6QAAAHhlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAABK8DAAAQXQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAADWgAwAEAAAAAQAAAB8AAAAAxZI1qAAAAAlwSFlzAAALRQAACxMB2k138gAAAXJJREFUWAntmM0qRVEUx3GVjygMKBmReAYZKQ+glPIAysDIxGPIjHdgqKQkxVCGylgGykRE8vH7q12rc8+63cnptE9r1a/933utu+9aq1Nnn93q8W0Q1zL0w4sflo9njFTv4Re+YRuysV4n0x3WD4zvGT1p5knOIxTr7ZPiqhiP2fSybGM9WmX2VVgszpP7A/EEdRT1mpLodhwm8Ab0+CnxDWiE9VHFAow3opooIjoQHYgORAea1oE1CjqBfZhoQnFLFPEDOlGIU/BMR6Q68PJx1/fwpII0vjmRK4U4+5uq9a6T0/+3UplP5z5r13Zi9AV6BOo40HqNNum1y02WzuAIptrdsRIdiA5EB6ID0YHKO9Dq8A96oc6C7v0+O8Rl4xoi0yvQUecd1iEb8443W1RwaKp4RM+YeZLTCJ08vH1SXBXjOZvelW3sXWbqHt3agJ0YPYqegzqKujV5dCX1/fQAevz0CaKr5UaYbmlXYTG3av4AOqxMfQL52RcAAAAASUVORK5CYII= + + + diff --git a/ownCloud/Release Notes/ReleaseNotesHostViewController.swift b/ownCloud/Release Notes/ReleaseNotesHostViewController.swift index 314510f0b..5176a9741 100644 --- a/ownCloud/Release Notes/ReleaseNotesHostViewController.swift +++ b/ownCloud/Release Notes/ReleaseNotesHostViewController.swift @@ -18,6 +18,7 @@ import UIKit import ownCloudSDK +import StoreKit class ReleaseNotesHostViewController: UIViewController { @@ -31,14 +32,14 @@ class ReleaseNotesHostViewController: UIViewController { // MARK: - Instance Variables var titleLabel = UILabel() var proceedButton = ThemeButton() - var footerLabel = UILabel() + var footerButton = UIButton() override func viewDidLoad() { super.viewDidLoad() Theme.shared.register(client: self) - VendorServices.setUserPreferenceValue(NSString(utf8String: VendorServices.shared.appVersion), forClassSettingsKey: .lastSeenReleaseNotesVersion) + ReleaseNotesDatasource.setUserPreferenceValue(NSString(utf8String: VendorServices.shared.appVersion), forClassSettingsKey: .lastSeenReleaseNotesVersion) let headerView = UIView() headerView.backgroundColor = .clear @@ -91,19 +92,20 @@ class ReleaseNotesHostViewController: UIViewController { proceedButton.addTarget(self, action: #selector(dismissView), for: .touchUpInside) bottomView.addSubview(proceedButton) - footerLabel.textAlignment = .center - footerLabel.translatesAutoresizingMaskIntoConstraints = false - footerLabel.text = "Thank you for using ownCloud.\nIf you like our App, please leave an AppStore review.\n❤️".localized - footerLabel.numberOfLines = 0 - footerLabel.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.footnote) - footerLabel.adjustsFontForContentSizeCategory = true - bottomView.addSubview(footerLabel) + footerButton.setTitle("Thank you for using ownCloud.\nIf you like our App, please leave an AppStore review.\n❤️".localized, for: .normal) + footerButton.titleLabel?.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.footnote) + footerButton.titleLabel?.adjustsFontForContentSizeCategory = true + footerButton.titleLabel?.numberOfLines = 0 + footerButton.titleLabel?.textAlignment = .center + footerButton.translatesAutoresizingMaskIntoConstraints = false + footerButton.addTarget(self, action: #selector(rateApp), for: .touchUpInside) + bottomView.addSubview(footerButton) NSLayoutConstraint.activate([ - footerLabel.leadingAnchor.constraint(equalTo: bottomView.leadingAnchor, constant: padding), - footerLabel.trailingAnchor.constraint(equalTo: bottomView.trailingAnchor, constant: padding * -1), - footerLabel.topAnchor.constraint(equalTo: bottomView.topAnchor, constant: smallPadding), - footerLabel.bottomAnchor.constraint(equalTo: proceedButton.topAnchor, constant: padding * -1) + footerButton.leadingAnchor.constraint(equalTo: bottomView.leadingAnchor, constant: padding), + footerButton.trailingAnchor.constraint(equalTo: bottomView.trailingAnchor, constant: padding * -1), + footerButton.topAnchor.constraint(equalTo: bottomView.topAnchor, constant: smallPadding), + footerButton.bottomAnchor.constraint(equalTo: proceedButton.topAnchor, constant: padding * -1) ]) NSLayoutConstraint.activate([ @@ -129,6 +131,10 @@ class ReleaseNotesHostViewController: UIViewController { @objc func dismissView() { self.dismiss(animated: true, completion: nil) } + + @objc func rateApp() { + SKStoreReviewController.requestReview() + } } // MARK: - Themeable implementation @@ -139,7 +145,7 @@ extension ReleaseNotesHostViewController : Themeable { titleLabel.applyThemeCollection(collection, itemStyle: .logo) proceedButton.backgroundColor = collection.neutralColors.normal.background proceedButton.setTitleColor(collection.neutralColors.normal.foreground, for: .normal) - footerLabel.textColor = collection.tableRowColors.labelColor + footerButton.titleLabel?.textColor = collection.tableRowColors.labelColor } } @@ -168,9 +174,11 @@ class ReleaseNotesDatasource : NSObject, OCClassSettingsUserPreferencesSupport { } return false + } else if self.classSetting(forOCClassSettingsKey: .lastSeenAppVersion) != nil, self.classSetting(forOCClassSettingsKey: .lastSeenAppVersion) as? String != VendorServices.shared.appVersion { + return true } - return true + return false } func releaseNotes(for version: String) -> [[String:Any]]? { @@ -194,7 +202,8 @@ class ReleaseNotesDatasource : NSObject, OCClassSettingsUserPreferencesSupport { } extension OCClassSettingsKey { - static let lastSeenReleaseNotesVersion = OCClassSettingsKey("lastSeenReleaseNotesVersionTest") + static let lastSeenReleaseNotesVersion = OCClassSettingsKey("lastSeenReleaseNotesVersion") + static let lastSeenAppVersion = OCClassSettingsKey("lastSeenAppVersion") } extension ReleaseNotesDatasource : OCClassSettingsSupport { @@ -202,7 +211,7 @@ extension ReleaseNotesDatasource : OCClassSettingsSupport { static func defaultSettings(forIdentifier identifier: OCClassSettingsIdentifier) -> [OCClassSettingsKey : Any]? { if identifier == .app { - return [ .lastSeenReleaseNotesVersion : true] + return nil } return nil diff --git a/ownCloud/Release Notes/ReleaseNotesTableViewController.swift b/ownCloud/Release Notes/ReleaseNotesTableViewController.swift index 0638268ac..b93be194c 100644 --- a/ownCloud/Release Notes/ReleaseNotesTableViewController.swift +++ b/ownCloud/Release Notes/ReleaseNotesTableViewController.swift @@ -36,10 +36,10 @@ class ReleaseNotesTableViewController: StaticTableViewController { for releaseNote in (notes as? [[String:String]])! { if let title = releaseNote["Title"], let subtitle = releaseNote["Subtitle"], let strBase64 = releaseNote["ImageData"] { let dataDecoded : Data = Data(base64Encoded: strBase64, options: .ignoreUnknownCharacters)! - if let decodedimage = UIImage(data: dataDecoded)?.tinted(with: .white) { + if let decodedimage = UIImage(data: dataDecoded)?.tinted(with: .white)?.scaledImageFitting(in: CGSize(width: 50.0, height: 44.0)) { let row = StaticTableViewRow(rowWithAction: { (_, _) in self.dismissAnimated() - }, title: title, subtitle: subtitle, image: decodedimage, imageWidth:70.0, alignment: .left, accessoryType: .none) + }, title: title, subtitle: subtitle, image: decodedimage, imageWidth:50.0, alignment: .left, accessoryType: .none) section.add(row: row) } } diff --git a/ownCloud/Server List/ServerListTableViewController.swift b/ownCloud/Server List/ServerListTableViewController.swift index 04d271f64..e90a359ae 100644 --- a/ownCloud/Server List/ServerListTableViewController.swift +++ b/ownCloud/Server List/ServerListTableViewController.swift @@ -100,6 +100,8 @@ class ServerListTableViewController: UITableViewController, Themeable { releaseNotesHostController.modalPresentationStyle = .formSheet self.present(releaseNotesHostController, animated: true, completion: nil) } + + ReleaseNotesDatasource.setUserPreferenceValue(NSString(utf8String: VendorServices.shared.appVersion), forClassSettingsKey: .lastSeenAppVersion) } override func viewWillAppear(_ animated: Bool) {