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 request] Dropbox connectivity directory #4

Closed
wakatara opened this issue Jun 6, 2020 · 6 comments
Closed

[Feature request] Dropbox connectivity directory #4

wakatara opened this issue Jun 6, 2020 · 6 comments

Comments

@wakatara
Copy link

wakatara commented Jun 6, 2020

This looks exciting. Thanks for working on this.

However, for it to be truly useful for me, I really need it to have connectivity to Dropbox in order to take advantage of being able to use it for my large Deft and org-roam directories. Any chance of being able to include that (as well, as... and I know you've probably heard this already) editing?... =p. (though was surprised to see it support Apple's native files when I purchased... =] ).

BeOrg breakthrough with users I imagine came through when he provided Dropbox connectivity since so many real emacs users use that for sync directories (possibly in addition to secure webdav).

Really excited and heartened to see more people working on cross platform apps for org-mode.

@amake
Copy link
Owner

amake commented Jun 6, 2020

Thanks very much for your purchase, and for your request.

As you know, Orgro already works with the OS files API. This means that you should already have access to your Dropbox files via the Open File button:

  1. Tap Open File
  2. Tap the Browse tab
  3. If you're not at the root Browse screen (I think usually you're not by default), tap the upper left button that takes you up in the hierarchy
  4. If Dropbox isn't in the list of Locations, tap the upper right menu button (circled ...) then tap Edit
  5. Enable Dropbox and tap Done
  6. Choose Dropbox from the Locations list

orgro-dropbox

Is there anything you could do with "full" Dropbox support (via their SDK, I imagine) that you can't do with the existing functionality?

Note also that in an upcoming release (very soon, hopefully), Orgro will be able to remember and provide quick access to recently opened files, including those in Dropbox, so you won't have to go through the file picker every time.

@wakatara
Copy link
Author

wakatara commented Jun 7, 2020

Hehe... I have to admit embarrassment and that I owe you an apology for not realizing I could access Dropbox files via the Apple Files native functionality (also, bonus points for the video!! Wow. Bonus points for extreme support.).

In Beorg, the functionality is a direct config option so I had assumed the same was required for orgro (I think you should rename it ogre btw... =] ).

This works fine this way. Thank you for the pointer. I have to admit however, that Dropbox direct sycns seem to work better than Apple Files syncing capabilities. I've had loads of litlte issues with files not syncing properly so may be something to watch out for in the future, though this definitely works.

(still, editing files in org mode on the go would be the bomb for me here though again, with te above that might be affected by how files sync.).

thanks!

@wakatara wakatara closed this as completed Jun 7, 2020
@amake
Copy link
Owner

amake commented Jun 7, 2020

I have to admit embarrassment and that I owe you an apology for not realizing I could access Dropbox files via the Apple Files native functionality

It is well hidden! The Files app is very dense and, in my opinion, hard to use.

In Beorg, the functionality is a direct config option

Beorg specifically treats Dropbox as a privileged data source, and requires you to give it direct access via Dropbox’s API. I actually prefer not to privilege any one provider or include their (non-free) SDK, partly on principle, and partly because it’s a lot of work for something I probably don’t need myself.

But I am not against it if doing so enables compelling new functionality that can’t be implemented any other way.

I think you should rename it ogre btw... =]

I like that! If I had thought of it I might have. At this point I like the logo too much to give it up, and it would be very odd to be named “ogre” but have a unicorn icon.

I've had loads of litlte issues with files not syncing properly

That’s frustrating. I’ll keep my eyes peeled for any issues and see if there’s anything to be done about it in Orgro.

editing files in org mode on the go would be the bomb for me

Editing would be a very big stretch goal. File access I don’t think is the main hurdle. Off the top of my head the main barriers are:

  • Medium difficultly: Ensuring faithful round-trip from text to parsed representations and back to text. I wouldn’t want to mangle files or make spurious changes, but I didn’t design the parser with round-tripping in mind, so that might be hard.
  • Very hard difficulty: Making a good interface for editing. The display is not one big text buffer with styling like in Emacs, it’s a bunch of separate UI components (“widgets” in Flutter parlance). So editing can’t be as simple as placing a cursor and typing, which is probably not very desirable on mobile anyway. It will be hard just to design a usable interface; implementing it may be even harder—it could require completely reimplementing the current UI.

That said, I may get the itch to do something a bit smaller in scope, such as allowing checking checkboxes or toggling todo status.

Anyway, thanks for the feedback!

@mpereira
Copy link

mpereira commented Sep 2, 2020

Hi @amake,

Thanks for creating this app. I just bought it and it looks great and seems to work well.

I'm on Android, and realized that there's no support for opening Dropbox files. Is this something you intend on implementing any time soon?

@amake
Copy link
Owner

amake commented Sep 3, 2020

@mpereira Thanks very much for your purchase.

Regarding Dropbox on Android, please see the FAQ. The fact that Dropbox doesn't show up in the file picker on Android is a choice made by Dropbox, and only they can remedy it.

You can open Dropbox files in Orgro from within the Dropbox app by the usual means: select Orgro from the "Open with" dialog.
Screenshot (Sep 3, 2020 09:00:05)

The only other option would be to incorporate the Dropbox SDK and make you authorize Orgro to access your account. I won't be doing that for a number of reasons.

@mpereira
Copy link

mpereira commented Sep 3, 2020

Hi @amake,

Thanks for the reply. I guess I understand not wanting to implement the Dropbox SDK into orgro.

You probably already realize this, but as feedback, this makes the app less convenient than alternatives like organice. From my POV as a user, having to open org files from Dropbox is cumbersome.

Anyway, thanks again for the app!

amake added a commit that referenced this issue Oct 28, 2022
```
══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════
The following assertion was thrown during a scheduler callback:
Layer OffsetEngineLayer was previously used as oldLayer.
Once a layer is used as oldLayer, it may not be used again. Instead, after calling one of the
SceneBuilder.push* methods and passing an oldLayer to it, use the layer returned by the method as
oldLayer in subsequent frames.
'dart:ui/compositing.dart':
Failed assertion: line 110 pos 9: '<optimized out>'

Either the assertion indicates an error in the framework itself, or we should provide substantially
more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=2_bug.md

When the exception was thrown, this was the stack:
#2      _EngineLayerWrapper._debugCheckNotUsedAsOldLayer (dart:ui/compositing.dart:110:9)
#3      SceneBuilder.addRetained.<anonymous closure>.recursivelyCheckChildrenUsedOnce (dart:ui/compositing.dart:695:21)
#4      List.forEach (dart:core-patch/growable_array.dart:416:8)
#5      SceneBuilder.addRetained.<anonymous closure>.recursivelyCheckChildrenUsedOnce (dart:ui/compositing.dart:701:18)
#6      SceneBuilder.addRetained.<anonymous closure> (dart:ui/compositing.dart:704:7)
#7      SceneBuilder.addRetained (dart:ui/compositing.dart:707:6)
#8      Layer._addToSceneWithRetainedRendering (package:flutter/src/rendering/layer.dart:671:15)
#9      ContainerLayer.addChildrenToScene (package:flutter/src/rendering/layer.dart:1284:13)
#10     OffsetLayer.addToScene (package:flutter/src/rendering/layer.dart:1421:5)
#11     Layer._addToSceneWithRetainedRendering (package:flutter/src/rendering/layer.dart:674:5)
#12     ContainerLayer.addChildrenToScene (package:flutter/src/rendering/layer.dart:1284:13)
#13     ClipRectLayer.addToScene (package:flutter/src/rendering/layer.dart:1590:5)
#14     Layer._addToSceneWithRetainedRendering (package:flutter/src/rendering/layer.dart:674:5)
#15     ContainerLayer.addChildrenToScene (package:flutter/src/rendering/layer.dart:1284:13)
#16     OffsetLayer.addToScene (package:flutter/src/rendering/layer.dart:1421:5)
#17     Layer._addToSceneWithRetainedRendering (package:flutter/src/rendering/layer.dart:674:5)
#18     ContainerLayer.addChildrenToScene (package:flutter/src/rendering/layer.dart:1284:13)
#19     OffsetLayer.addToScene (package:flutter/src/rendering/layer.dart:1421:5)
#20     Layer._addToSceneWithRetainedRendering (package:flutter/src/rendering/layer.dart:674:5)
#21     ContainerLayer.addChildrenToScene (package:flutter/src/rendering/layer.dart:1284:13)
#22     OffsetLayer.addToScene (package:flutter/src/rendering/layer.dart:1421:5)
#23     Layer._addToSceneWithRetainedRendering (package:flutter/src/rendering/layer.dart:674:5)
#24     ContainerLayer.addChildrenToScene (package:flutter/src/rendering/layer.dart:1284:13)
#25     TransformLayer.addToScene (package:flutter/src/rendering/layer.dart:1914:5)
#26     ContainerLayer.buildScene (package:flutter/src/rendering/layer.dart:1097:5)
#27     RenderView.compositeFrame (package:flutter/src/rendering/view.dart:231:37)
#28     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:514:18)
#29     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:869:13)
#30     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:375:5)
#31     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1271:15)
#32     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1200:9)
#33     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1058:5)
#34     _invoke (dart:ui/hooks.dart:145:13)
#35     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:338:5)
#36     _drawFrame (dart:ui/hooks.dart:112:31)
(elided 2 frames from class _AssertionError)
════════════════════════════════════════════════════════════════════════════════════════════════════
```
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