Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feature/fp-series-4] File Provider improvements #253

Merged
merged 18 commits into from
Feb 26, 2019
Merged

Conversation

felix-schwarz
Copy link
Contributor

@felix-schwarz felix-schwarz commented Feb 4, 2019

Description

Further improvements to the file provider

Related Issue

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Status check:


BUGS & IMPROVEMENTS

@CLAassistant
Copy link

CLAassistant commented Feb 4, 2019

CLA assistant check
Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
1 out of 2 committers have signed the CLA.

✅ michaelstingl
❌ felix-schwarz
You have signed the CLA already but the status is still pending? Let us recheck it.

@felix-schwarz felix-schwarz changed the title [feature/fp series 4] File Provider improvements [feature/fp-series-4] File Provider improvements Feb 4, 2019
@jesmrec jesmrec added this to the 1.0.0 milestone Feb 4, 2019
@pablocarmu
Copy link
Contributor

8

Rename + Duplicate in files app not working as expected when the server in maintenance mode (likely in whole offline mode)

Steps:

  1. Put the server in maintenance mode.
  2. Open files app a rename a picture.
  3. Duplicate this picture.
  4. The duplicated picture has the original name of the image, not the renamed one.
  5. Deactivate maintenance mode in the server.
  6. Duplicated file with original name is uploaded and you can see it.
  7. Original file with the renamed name appears to be Ok, but if you try to open it, there is an error (or the preview does not show anything)

Tested with commit 7f3e5d3

@jesmrec
Copy link
Contributor

jesmrec commented Feb 7, 2019

Update with commit c47d51e:

  • Creation of files from 3rd Party apps: new MS Office documents are correctly saved. Pages documents are correctly saved via Files App.

  • Files App copy/pasting of folders is still reproducible.

Still Reproducible: (1), (4), (5), (7), (8)
Fixed: (3), (6)

Batched uploads: #224

@jesmrec
Copy link
Contributor

jesmrec commented Feb 12, 2019

(9)

Check this steps out:

  1. In web UI (or other client), remove an item
  2. In app, remove the same item

Current: app is stucked
Expected: Some error is shown to the user

Commit: c47d51e

- Updated BookmarkViewController for leaner OCConnection init
- Streamline ClientItemCell UI update code
- Fix SwiftLint warning
- Use OCHTTPPipelineManager.setupPersistentPipelines to keep pipelines open for the lifetime of the process
- Add missing completionHandler calls for OCCoreManager scheduleOfflineOperation calls (!)
	- use of NSFileProtectionCompleteUntilFirstUserAuthentication in FileProvider
- Renaming "Activity" tab to "Status"
	- drew and added new icon "status-flash"
- Update to latest ios-sdk
@felix-schwarz
Copy link
Contributor Author

felix-schwarz commented Feb 21, 2019

@jesmrec Ready for QA:

  • Propagation: #204 (comment) (check second bullet point: copy and paste of folders)

This is a OS level bug. Copy and pasting of folders is as broken as folder duplication. But we can't detect and block it in this case, unfortunately:

bildschirmfoto 2019-02-21 um 14 57 50

Please see the log excerpt in Appendix A to see the commands iOS sends to the File Provider.

Likely an issue with the previous OCCoreManager implementation dead-locking or OCCore locking on shutdown. Both known issues have been addressed.

I could not reproduce this issue.

Cancellation is now only available for those sync actions that have support for it (currently upload and download), so issue 4 no longer applies.

The cancellation is stored as an event, but only processed when the operation's sync record's time has come. So if you upload a large file and then trigger a download, then cancel the download, then cancel the upload, the download will not take place.

Improved cancellation support is part of the full implementation of offline support.

This should have been fixed for a while. FWIW I could not reproduce this.

This is also subject to implementing full offline support.

I could not reproduce this direc, but found another issue, which I fixed. The way it should work now is that an alert comes up saying that the file has changed on the server - and whether the user really wants to delete the file.

That alert is triggered by the server responding with 412 Precondition Failed for the DELETE with If-Match header (which ensures that the item is only deleted if the eTags/versions match - or 412 is returned). If the server responded with a 404 Not Found, that alert would not come up and the file would be removed. (/cc @DeepDiver1975).

Appendix A

2019-02-21 14:52:34.663000+0100 ownCloud File Provider[1167:222423] [dbug] | [FP, CreateDir, …] Start of createDirectoryWithName=Photos, inParentItemIdentifier=4B196F1B4BA24B5794C03CF8D989C5CC [… FPAction, CmdUUID:EEBE8302-0830-42EA-965F-A648CDB78C3F] [FileProviderExtension.m:391|FULL]
2019-02-21 14:52:34.665000+0100 ownCloud File Provider[1167:222423] [dbug] | [FP, CreateDir, …] Creating folder Photos inside /Documents/ [… FPAction, CmdUUID:EEBE8302-0830-42EA-965F-A648CDB78C3F] [FileProviderExtension.m:398|FULL]
2019-02-21 14:52:36.267000+0100 ownCloud File Provider[1167:222122] [dbug] | [FP, CreateDir, …] Completed with item=<OCItem: 0x1027bf8d0, type: 1, name: Photos, path: /Documents/Photos/, size: 0 bytes, MIME-Type: (null), Last modified: 2019-02-21 13:52:35 +0000, fileID: 00000136ocpd9kmjqynh, eTag: "5c6ead23737fb", parentID: 00000084ocpd9kmjqynh, localID: 8594E206610E4EB384855B0D5FB07666, parentLocalID: 4B196F1B4BA24B5794C03CF8D989C5CC>, error=(null) [… FPAction, CmdUUID:EEBE8302-0830-42EA-965F-A648CDB78C3F] [FileProviderExtension.m:426|FULL]
2019-02-21 14:52:36.331000+0100 ownCloud File Provider[1167:222426] [dbug] | [FP, StartProviding, …] Start of startProvidingItemAtURL=file:///private/var/mobile/Containers/Shared/AppGroup/85F7F3BE-E3F2-4893-B424-CE45930C5C58/File%20Provider%20Storage/B8C62ACE-71FD-49F8-8BAA-C7C2BC164A07/0985A17BF3DA40749FD5FC1C0DF8D1AF/Paris.jpg [… FPAction, CmdUUID:59FA1899-D8DE-44CF-91D5-D94B660CCC33] [FileProviderExtension.m:217|FULL]
2019-02-21 14:52:36.332000+0100 ownCloud File Provider[1167:222426] [dbug] | [FP, StartProviding, …] Downloading <OCItem: 0x102664ff0, type: 0, name: Paris.jpg, path: /Photos/Paris.jpg, size: 228761 bytes, MIME-Type: image/jpeg, Last modified: 2019-02-21 07:20:47 +0000, fileID: 00000082ocpd9kmjqynh, eTag: "a0d32b77eb5a608f400fe4ad431c986f", parentID: 00000079ocpd9kmjqynh, localID: 0985A17BF3DA40749FD5FC1C0DF8D1AF, parentLocalID: 041B73C227EC472D9E024549C3920204> [… FPAction, CmdUUID:B05E133F-5B66-46F8-96C7-5FB82F7ACACF] [FileProviderExtension.m:223|FULL]
2019-02-21 14:52:37.190000+0100 ownCloud File Provider[1167:222122] [dbug] | [FP, StartProviding, …] Completed with error=(null) [… FPAction, CmdUUID:B05E133F-5B66-46F8-96C7-5FB82F7ACACF] [FileProviderExtension.m:234|FULL]
2019-02-21 14:52:37.224000+0100 ownCloud File Provider[1167:222423] [dbug] | [FP, Import, …] Start of importDocumentAtURL=file:///private/var/mobile/Containers/Data/Application/8F565219-2E3B-482C-BF6E-E099EA865EE1/tmp/2E7BCDC9-B310-42B2-9E74-2825FAEB4E5A/Paris.jpg/, toParentItemIdentifier=8594E206610E4EB384855B0D5FB07666 [… FPAction, CmdUUID:B6CAE6B3-0170-4271-ACA2-17BEBE6E88DE] [FileProviderExtension.m:638|FULL]
2019-02-21 14:52:37.243000+0100 ownCloud File Provider[1167:222423] [dbug] | [FP, Import, …] Importing Paris.jpg at <OCItem: 0x102674e50, type: 1, name: Photos, path: /Documents/Photos/, size: 0 bytes, MIME-Type: (null), Last modified: 2019-02-21 13:52:35 +0000, fileID: 00000136ocpd9kmjqynh, eTag: "5c6ead23737fb", parentID: 00000084ocpd9kmjqynh, localID: 8594E206610E4EB384855B0D5FB07666, parentLocalID: 4B196F1B4BA24B5794C03CF8D989C5CC> fromURL file:///private/var/mobile/Containers/Data/Application/8F565219-2E3B-482C-BF6E-E099EA865EE1/tmp/2E7BCDC9-B310-42B2-9E74-2825FAEB4E5A/Paris.jpg/ [… FPAction, CmdUUID:B6CAE6B3-0170-4271-ACA2-17BEBE6E88DE] [FileProviderExtension.m:670|FULL]
2019-02-21 14:52:37.248000+0100 ownCloud File Provider[1167:222423] [dbug] | [FP, Import, …] Completed with placeholderItem=<OCItem: 0x102680b80, type: 0, name: Paris.jpg, path: /Documents/Photos/Paris.jpg, size: 228761 bytes, MIME-Type: image/jpeg, Last modified: 2019-02-21 13:52:37 +0000, fileID: _placeholder_EE98E747-C245-4930-AADE-1D8516852460, eTag: _placeholder_, parentID: 00000136ocpd9kmjqynh, localID: 775677394B69411A9F874579D56D3D08, parentLocalID: 8594E206610E4EB384855B0D5FB07666>, error=(null) [… FPAction, CmdUUID:B6CAE6B3-0170-4271-ACA2-17BEBE6E88DE] [FileProviderExtension.m:729|FULL]
2019-02-21 14:52:37.332000+0100 ownCloud File Provider[1167:222426] [dbug] | [FP, CreateDir, …] Start of createDirectoryWithName=Photos, inParentItemIdentifier=8594E206610E4EB384855B0D5FB07666 [… FPAction, CmdUUID:325003EF-5D0A-41A8-A1C6-E5F924F5F99D] [FileProviderExtension.m:391|FULL]
2019-02-21 14:52:37.333000+0100 ownCloud File Provider[1167:222426] [dbug] | [FP, CreateDir, …] Creating folder Photos inside /Documents/Photos/ [… FPAction, CmdUUID:325003EF-5D0A-41A8-A1C6-E5F924F5F99D] [FileProviderExtension.m:398|FULL]
2019-02-21 14:52:40.686000+0100 ownCloud File Provider[1167:222122] [dbug] | [FP, CreateDir, …] Completed with item=<OCItem: 0x102681eb0, type: 1, name: Photos, path: /Documents/Photos/Photos/, size: 0 bytes, MIME-Type: (null), Last modified: 2019-02-21 13:52:39 +0000, fileID: 00000138ocpd9kmjqynh, eTag: "5c6ead27bc34e", parentID: 00000136ocpd9kmjqynh, localID: 6F5EBD28464A461B9674E4B459A18E45, parentLocalID: 8594E206610E4EB384855B0D5FB07666>, error=(null) [… FPAction, CmdUUID:325003EF-5D0A-41A8-A1C6-E5F924F5F99D] [FileProviderExtension.m:426|FULL]
2019-02-21 14:52:40.751000+0100 ownCloud File Provider[1167:222426] [dbug] | [FP, StartProviding, …] Start of startProvidingItemAtURL=file:///private/var/mobile/Containers/Shared/AppGroup/85F7F3BE-E3F2-4893-B424-CE45930C5C58/File%20Provider%20Storage/B8C62ACE-71FD-49F8-8BAA-C7C2BC164A07/0985A17BF3DA40749FD5FC1C0DF8D1AF/Paris.jpg [… FPAction, CmdUUID:C368D11D-D394-4254-9C41-D15A318C2ED3] [FileProviderExtension.m:217|FULL]
2019-02-21 14:52:40.752000+0100 ownCloud File Provider[1167:222426] [dbug] | [FP, StartProviding, …] Downloading <OCItem: 0x1027cd370, type: 0, name: Paris.jpg, path: /Photos/Paris.jpg, size: 228761 bytes, MIME-Type: image/jpeg, Last modified: 2019-02-21 07:20:47 +0000, fileID: 00000082ocpd9kmjqynh, eTag: "a0d32b77eb5a608f400fe4ad431c986f", parentID: 00000079ocpd9kmjqynh, localID: 0985A17BF3DA40749FD5FC1C0DF8D1AF, parentLocalID: 041B73C227EC472D9E024549C3920204> [… FPAction, CmdUUID:026F761B-D9EF-48D3-B28D-E09FBADF2047] [FileProviderExtension.m:223|FULL]
2019-02-21 14:52:40.758000+0100 ownCloud File Provider[1167:222122] [dbug] | [FP, StartProviding, …] Completed with error=(null) [… FPAction, CmdUUID:026F761B-D9EF-48D3-B28D-E09FBADF2047] [FileProviderExtension.m:234|FULL]
2019-02-21 14:52:40.762000+0100 ownCloud File Provider[1167:222413] [dbug] | [FP, Import, …] Start of importDocumentAtURL=file:///private/var/mobile/Containers/Data/Application/8F565219-2E3B-482C-BF6E-E099EA865EE1/tmp/DC32630F-1CEB-4612-906F-EEEF5C977EC9/Paris.jpg/, toParentItemIdentifier=6F5EBD28464A461B9674E4B459A18E45 [… FPAction, CmdUUID:C95BB1D7-08BC-46B2-A614-761D03718109] [FileProviderExtension.m:638|FULL]
2019-02-21 14:52:40.775000+0100 ownCloud File Provider[1167:222413] [dbug] | [FP, Import, …] Importing Paris.jpg at <OCItem: 0x10269fac0, type: 1, name: Photos, path: /Documents/Photos/Photos/, size: 0 bytes, MIME-Type: (null), Last modified: 2019-02-21 13:52:39 +0000, fileID: 00000138ocpd9kmjqynh, eTag: "5c6ead27bc34e", parentID: 00000136ocpd9kmjqynh, localID: 6F5EBD28464A461B9674E4B459A18E45, parentLocalID: 8594E206610E4EB384855B0D5FB07666> fromURL file:///private/var/mobile/Containers/Data/Application/8F565219-2E3B-482C-BF6E-E099EA865EE1/tmp/DC32630F-1CEB-4612-906F-EEEF5C977EC9/Paris.jpg/ [… FPAction, CmdUUID:C95BB1D7-08BC-46B2-A614-761D03718109] [FileProviderExtension.m:670|FULL]
2019-02-21 14:52:40.778000+0100 ownCloud File Provider[1167:222413] [dbug] | [FP, Import, …] Completed with placeholderItem=<OCItem: 0x1027d6530, type: 0, name: Paris.jpg, path: /Documents/Photos/Photos/Paris.jpg, size: 228761 bytes, MIME-Type: image/jpeg, Last modified: 2019-02-21 13:52:37 +0000, fileID: _placeholder_318958D4-FAB0-454A-AF93-DD4B46F821B2, eTag: _placeholder_, parentID: 00000138ocpd9kmjqynh, localID: 9D95D4A7BACA46CB9EF27181285C6C76, parentLocalID: 6F5EBD28464A461B9674E4B459A18E45>, error=(null) [… FPAction, CmdUUID:C95BB1D7-08BC-46B2-A614-761D03718109] [FileProviderExtension.m:729|FULL]
2019-02-21 14:52:40.852000+0100 ownCloud File Provider[1167:222413] [dbug] | [FP, CreateDir, …] Start of createDirectoryWithName=Photos, inParentItemIdentifier=6F5EBD28464A461B9674E4B459A18E45 [… FPAction, CmdUUID:C50CF9EC-E930-4858-B511-324947C0B7B5] [FileProviderExtension.m:391|FULL]
2019-02-21 14:52:40.853000+0100 ownCloud File Provider[1167:222413] [dbug] | [FP, CreateDir, …] Creating folder Photos inside /Documents/Photos/Photos/ [… FPAction, CmdUUID:C50CF9EC-E930-4858-B511-324947C0B7B5] [FileProviderExtension.m:398|FULL]
2019-02-21 14:52:43.532000+0100 ownCloud File Provider[1167:222122] [dbug] | [FP, CreateDir, …] Completed with item=<OCItem: 0x10269e620, type: 1, name: Photos, path: /Documents/Photos/Photos/Photos/, size: 0 bytes, MIME-Type: (null), Last modified: 2019-02-21 13:52:42 +0000, fileID: 00000140ocpd9kmjqynh, eTag: "5c6ead2a9ee79", parentID: 00000138ocpd9kmjqynh, localID: A613BB32948E4C81BDEAADBE145B97E1, parentLocalID: 6F5EBD28464A461B9674E4B459A18E45>, error=(null) [… FPAction, CmdUUID:C50CF9EC-E930-4858-B511-324947C0B7B5] [FileProviderExtension.m:426|FULL]
2019-02-21 14:52:43.587000+0100 ownCloud File Provider[1167:222428] [dbug] | [FP, StartProviding, …] Start of startProvidingItemAtURL=file:///private/var/mobile/Containers/Shared/AppGroup/85F7F3BE-E3F2-4893-B424-CE45930C5C58/File%20Provider%20Storage/B8C62ACE-71FD-49F8-8BAA-C7C2BC164A07/0985A17BF3DA40749FD5FC1C0DF8D1AF/Paris.jpg [… FPAction, CmdUUID:19FFE4AD-2024-41A2-8EE4-C95F94CAF119] [FileProviderExtension.m:217|FULL]
2019-02-21 14:52:43.588000+0100 ownCloud File Provider[1167:222428] [dbug] | [FP, StartProviding, …] Downloading <OCItem: 0x102693290, type: 0, name: Paris.jpg, path: /Photos/Paris.jpg, size: 228761 bytes, MIME-Type: image/jpeg, Last modified: 2019-02-21 07:20:47 +0000, fileID: 00000082ocpd9kmjqynh, eTag: "a0d32b77eb5a608f400fe4ad431c986f", parentID: 00000079ocpd9kmjqynh, localID: 0985A17BF3DA40749FD5FC1C0DF8D1AF, parentLocalID: 041B73C227EC472D9E024549C3920204> [… FPAction, CmdUUID:4987E198-682E-490D-90AC-DE12B134695D] [FileProviderExtension.m:223|FULL]
2019-02-21 14:52:43.593000+0100 ownCloud File Provider[1167:222122] [dbug] | [FP, StartProviding, …] Completed with error=(null) [… FPAction, CmdUUID:4987E198-682E-490D-90AC-DE12B134695D] [FileProviderExtension.m:234|FULL]
2019-02-21 14:52:43.596000+0100 ownCloud File Provider[1167:222423] [dbug] | [FP, Import, …] Start of importDocumentAtURL=file:///private/var/mobile/Containers/Data/Application/8F565219-2E3B-482C-BF6E-E099EA865EE1/tmp/6FAD12CC-4456-4FF3-8C9A-79F859EB6B17/Paris.jpg/, toParentItemIdentifier=A613BB32948E4C81BDEAADBE145B97E1 [… FPAction, CmdUUID:1B05BB94-640D-48AB-B256-D697F84F760A] [FileProviderExtension.m:638|FULL]
2019-02-21 14:52:43.608000+0100 ownCloud File Provider[1167:222423] [dbug] | [FP, Import, …] Importing Paris.jpg at <OCItem: 0x1026833b0, type: 1, name: Photos, path: /Documents/Photos/Photos/Photos/, size: 0 bytes, MIME-Type: (null), Last modified: 2019-02-21 13:52:42 +0000, fileID: 00000140ocpd9kmjqynh, eTag: "5c6ead2a9ee79", parentID: 00000138ocpd9kmjqynh, localID: A613BB32948E4C81BDEAADBE145B97E1, parentLocalID: 6F5EBD28464A461B9674E4B459A18E45> fromURL file:///private/var/mobile/Containers/Data/Application/8F565219-2E3B-482C-BF6E-E099EA865EE1/tmp/6FAD12CC-4456-4FF3-8C9A-79F859EB6B17/Paris.jpg/ [… FPAction, CmdUUID:1B05BB94-640D-48AB-B256-D697F84F760A] [FileProviderExtension.m:670|FULL]
2019-02-21 14:52:43.610000+0100 ownCloud File Provider[1167:222423] [dbug] | [FP, Import, …] Completed with placeholderItem=<OCItem: 0x1027d84a0, type: 0, name: Paris.jpg, path: /Documents/Photos/Photos/Photos/Paris.jpg, size: 228761 bytes, MIME-Type: image/jpeg, Last modified: 2019-02-21 13:52:37 +0000, fileID: _placeholder_49A3C864-ED18-4D9B-A163-40EB6BF9581A, eTag: _placeholder_, parentID: 00000140ocpd9kmjqynh, localID: 2196540DE9F04029BA82DA1001B07463, parentLocalID: A613BB32948E4C81BDEAADBE145B97E1>, error=(null) [… FPAction, CmdUUID:1B05BB94-640D-48AB-B256-D697F84F760A] [FileProviderExtension.m:729|FULL]
2019-02-21 14:52:43.688000+0100 ownCloud File Provider[1167:222428] [dbug] | [FP, CreateDir, …] Start of createDirectoryWithName=Photos, inParentItemIdentifier=A613BB32948E4C81BDEAADBE145B97E1 [… FPAction, CmdUUID:CA706A68-C554-4A05-86F3-4B027A4A4432] [FileProviderExtension.m:391|FULL]
2019-02-21 14:52:43.689000+0100 ownCloud File Provider[1167:222428] [dbug] | [FP, CreateDir, …] Creating folder Photos inside /Documents/Photos/Photos/Photos/ [… FPAction, CmdUUID:CA706A68-C554-4A05-86F3-4B027A4A4432] [FileProviderExtension.m:398|FULL]
2019-02-21 14:52:46.381000+0100 ownCloud File Provider[1167:222122] [dbug] | [FP, CreateDir, …] Completed with item=<OCItem: 0x1026a41f0, type: 1, name: Photos, path: /Documents/Photos/Photos/Photos/Photos/, size: 0 bytes, MIME-Type: (null), Last modified: 2019-02-21 13:52:45 +0000, fileID: 00000142ocpd9kmjqynh, eTag: "5c6ead2d9b504", parentID: 00000140ocpd9kmjqynh, localID: 9472863A911247068F2AD9A9E94EEABF, parentLocalID: A613BB32948E4C81BDEAADBE145B97E1>, error=(null) [… FPAction, CmdUUID:CA706A68-C554-4A05-86F3-4B027A4A4432] [FileProviderExtension.m:426|FULL]
2019-02-21 14:52:46.419000+0100 ownCloud File Provider[1167:222426] [dbug] | [FP, StartProviding, …] Start of startProvidingItemAtURL=file:///private/var/mobile/Containers/Shared/AppGroup/85F7F3BE-E3F2-4893-B424-CE45930C5C58/File%20Provider%20Storage/B8C62ACE-71FD-49F8-8BAA-C7C2BC164A07/0985A17BF3DA40749FD5FC1C0DF8D1AF/Paris.jpg [… FPAction, CmdUUID:DD985F2E-5598-432F-93D4-181D31877AE5] [FileProviderExtension.m:217|FULL]
…

@jesmrec
Copy link
Contributor

jesmrec commented Feb 22, 2019

Checks with 77cd2c0

(1), (2), (3), (4), (6), (7), (9) -> fixed

(8) -> addressed to offline

About (4) and (5)

Cancellation is now only available for those sync actions that have support for it (currently upload and download), so issue 4 no longer applies.

i guess you mean cancellation for enqueued operations, not for the current executing one. Apart of the technical explanation about the sync record (thanks!), the point is that the user should not see a "stop" button that is not clickable. So, i'd extend the non-availability condition for cancellations to every enqueued action, included uploads and downloads. We will iterate to improve this.

The cancellation is stored as an event, but only processed when the operation's sync record's time has come. So if you upload a large file and then trigger a download, then cancel the download, then cancel the upload, the download will not take place.

for me, this behaviour is the expected. you cancelled the enqueued action, so it will not take place after the current one finishes or is cancelled.

This was referenced Feb 22, 2019
@hosy hosy requested review from hosy and mneuwert February 26, 2019 07:21
@hosy hosy added the Approved by QA Approved by QA label Feb 26, 2019
@hosy hosy merged commit 0b40b17 into master Feb 26, 2019
@delete-merged-branch delete-merged-branch bot deleted the feature/fp-series-4 branch February 26, 2019 10:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Approved by QA Approved by QA
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants