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

Great app! But 2 major problems!! #53

Closed
jackuars7 opened this issue Oct 22, 2023 · 15 comments
Closed

Great app! But 2 major problems!! #53

jackuars7 opened this issue Oct 22, 2023 · 15 comments

Comments

@jackuars7
Copy link

jackuars7 commented Oct 22, 2023

Thank you so much for developing this app for free. I really appreciate your effort and the value it brings. However, there are a couple of major issues that prevent me from being able to use the app effectively.

  1. Firstly, the app doesn't seem to respect folder structures. I have a large number of photos and videos organized in various folders on my iOS 17 device. However, when I copy these folders to my Windows 11 computer, all the files get accumulated into a single folder. This not only makes it difficult to navigate and find specific files, but it also loses all the categorization that I had meticulously set up. With nearly 2000 photos, this becomes quite a frustrating experience.

  2. Secondly, I've noticed that when my iPhone goes to sleep, the file transfer process stops. While this may not be a big issue on its own, the real problem arises when I unlock my iPhone and reconnect it to my Windows 11 computer. The app doesn't support resuming the file transfer from where it left off, which is quite disappointing. This means that I have to manually check which files were not copied, which can be quite time-consuming and inconvenient.

I hope you can understand my concern and consider addressing these issues in future updates. Once again, I want to express my gratitude for your hard work, and I look forward to seeing improvements in the app. Thank you!

@spieglt
Copy link
Owner

spieglt commented Oct 22, 2023

Hey, thanks for the feedback! It used to preserve folder structure when transferring entire folders. I removed this when I rewrote it and added the mobile versions because it is much more difficult to work with folders on Android and iOS than the desktop platforms. I'll add it to the list to investigate this again, but I'm not sure whether it's possible nor when I'll be able to get to it. One workaround is to compress a directory into a .zip file and send that, which will preserve the structure when unzipped. That turns it into one large file transfer and adds the time of compression/decompression, but it's an option.

As for the iPhone going to sleep, I don't think there's anything I can do about that. Transfer resumption would require creating files with metadata about previous transfers on both devices. It gets complicated trying to determine whether a transfer failed or was deliberately cancelled, or whether the user intends to send the same file between the same two devices twice, and one of the things I like about Flying Carpet is that it leaves no traces of files that were transferred. The best I can recommend for now is to turn off sleep on your iPhone before starting a large transfer.

@jackuars7
Copy link
Author

jackuars7 commented Oct 22, 2023

Thank you for your prompt response.

  1. I appreciate your recommendation regarding converting the file to a .zip format and then decompressing it on the device. This is indeed a viable alternative, although it may require a significant amount of time. However, it may not be feasible when the device has limited storage capacity (in my case), as it would necessitate having double the storage space of the transferred file in order to begin the unzipping process.

  2. I'm uncertain about how to address the complication you mentioned concerning potential transfer failures, intentional cancellations, or duplicate transfers. One potential solution could be to implement different buttons, such as "stop," "pause," "resume," or "mirror," which would allow the user to choose the appropriate action. This would provide greater control and flexibility in managing the transfer process. However, if it doesn't align with your vision of leaving no traces of transferred files, then it might not be a potential solution.

In the meantime, as a temporary measure, I will attempt to disable the sleep function on both my PC and phone. This may serve as a countermeasure while I explore other potential solutions.

@spieglt
Copy link
Owner

spieglt commented Oct 23, 2023

I do think it's possible to create subdirectories on iOS and Android though I haven't tested it yet. I don't think I'll take up pause/resume. Previous experience makes me think it would be complicated to implement, unlikely to be stable, and I don't think much would be gained by it.

Mirror mode is a great idea though, and provides a way to complete a failed folder transfer without re-sending everything. It wouldn't require metadata; the sending end could send the file details and the receiving end could reply if it already has the file at that path. That leaves the question of what to do when a file is only partially transferred and then a mirror is started, but it can just transfer the file anyway if the file sizes or hashes of the files don't match. Hashing would be time-consuming for large files but is probably worth it for mirroring. This will be a lot of work and I'm not sure when I'll take it up but it's good to have a plan. Will leave this issue open till I get to it.

@stefnotch
Copy link

I was looking into local file transfer options after realising that https:/localsend/localsend is quite slow, and stumbled upon this one. It seems very interesting, but the folder structure preserving (without zipping) is a feature that I'd really need. My use-case is transferring relatively large folders between my two desktop machines.

The source code of the Android version is in a different repository, is that correct? Otherwise I don't immediately see how dealing with folders would be tricky?

@spieglt
Copy link
Owner

spieglt commented Nov 7, 2023

@stefnotch Yes, the Android version is written in Kotlin and the code is not public. Android and iOS are stricter with what you can do with files and folders outside of your own app than the Desktop platforms. Hopefully it won't be a problem to select a folder and enumerate all the files and folders inside it, or to recreate a folder tree once the user has selected where they want it to go.

For large files between two desktop machines though, you may just want to use SMB or something if they're on the same local network? It may be quicker to go through your router even if they're both wireless. It depends on the specific WiFi card and driver, but they seem to be slower when acting as hotspots than when connecting to an access point normally.

@spieglt
Copy link
Owner

spieglt commented Dec 3, 2023

I thought I was most of the way done with the Android and iOS versions, but when testing, I found that the Storage Access Framework I was using doesn't work well for recursing into a user-selected directory and checking for existing files. Will take some more time to develop a new strategy here.

@spieglt
Copy link
Owner

spieglt commented Dec 4, 2023

Never mind, I'd made another mistake. Current strategy works I think so folder mirroring for Android and iOS is mostly complete.

@spieglt
Copy link
Owner

spieglt commented Dec 29, 2023

Version 8 is out on the releases page. You can now send folders from iOS and Android, and directory structure will be preserved (relative to the top-most file). Flying Carpet also now checks whether a file of the same name, location, size, and contents already exists on the receiving end. If it does, it doesn't bother transferring the file. This means that partial, interrupted transfers of folders can be quickly resumed. @jackuars7 and @stefnotch, please try the new version if you're able and let me know how it works, thanks.

@jackuars7
Copy link
Author

I'll definitely give the new version a try. I'll be sure to share my feedback once I've had a chance to test it out. Thanks for keeping us in the loop!

@stefnotch
Copy link

stefnotch commented Dec 30, 2023

It doesn't preserve empty folders, does it? Localsend has the same issue localsend/localsend#554 for what it's worth

@jackuars7
Copy link
Author

jackuars7 commented Dec 30, 2023

Hi @spieglt

I wanted to share my experience with the new version. Overall, there are definite improvements which is great to see. However, I encountered an issue with the folder transfer functionality.

I attempted to send a folder with the following hierarchy. These were transferred from a Windows 11 to Android 13. I've attached the files for your reference:

image

folder.zip

At the end of transfer, this was the result.

  1. Files 1 and 2 under sub-folder 2 were transferred, but the folder structure was not respected (they were inside folder/subfolder 2/). Only the files were transferred and were dumped into a common folder.
  2. Files 3 and 4 under sub folder 1 didn't transfer at all.
Start the transfer on the other device and scan the QR code when prompted.
Firewall rule already in place.
Hosted network flyingCarpet_4d98 has started
Waiting for connection...
Connection accepted
common folder: C:\Users\Real_Illusions\Desktop\folder\sub folder 2
=========================
Sending file 1 of 4. Filename: New Microsoft PowerPoint Presentation.pptx
File size: 33.78KB
Sending took 0.10 seconds
Speed: 2.68mbps
=========================
Sending file 2 of 4. Filename: New Microsoft Word Document.docx
File size: 11.99KB
Sending took 0.20 seconds
Speed: 0.47mbps
=========================
Sending file 3 of 4. Filename: New Microsoft Excel Worksheet.xlsx
File size: 8.44KB
Error sending file: prefix not found
Hosted network stopped

I tried it multiple times but faced the same result.

@spieglt
Copy link
Owner

spieglt commented Dec 30, 2023

Yep, apologies, I made a dumb mistake with the folder detection when sending from the desktop versions and rushed it out too quickly. Tomorrow will probably be the earliest I can fix unfortunately. Thanks for the catch.

@spieglt
Copy link
Owner

spieglt commented Dec 31, 2023

This should be fixed in version 8.0.1 on the releases page, please let me know if you're able to verify. Thanks again!

@spieglt
Copy link
Owner

spieglt commented Dec 31, 2023

It doesn't preserve empty folders, does it? Localsend has the same issue localsend/localsend#554 for what it's worth

@stefnotch It does not preserve empty folders. I'm not sure if this is something I'll add. If so, it would have to be in a later version.

@spieglt
Copy link
Owner

spieglt commented Jan 6, 2024

Closing this as I believe it to be fixed but please let me know if you find any more bugs.

@spieglt spieglt closed this as completed Jan 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants