Skip to content

Commit 7d171a3

Browse files
Merge pull request #2599 from Phoenix-/dev
Fix opera bookmarks
2 parents 6877d7a + d041489 commit 7d171a3

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

Plugins/Flow.Launcher.Plugin.BrowserBookmark/ChromiumBookmarkLoader.cs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,32 @@ protected List<Bookmark> LoadBookmarks(string browserDataPath, string name)
3333

3434
protected List<Bookmark> LoadBookmarksFromFile(string path, string source)
3535
{
36+
var bookmarks = new List<Bookmark>();
37+
3638
if (!File.Exists(path))
37-
return new List<Bookmark>();
39+
return bookmarks;
3840

39-
var bookmarks = new List<Bookmark>();
4041
using var jsonDocument = JsonDocument.Parse(File.ReadAllText(path));
4142
if (!jsonDocument.RootElement.TryGetProperty("roots", out var rootElement))
42-
return new List<Bookmark>();
43+
return bookmarks;
44+
EnumerateRoot(rootElement, bookmarks, source);
45+
return bookmarks;
46+
}
47+
48+
private void EnumerateRoot(JsonElement rootElement, ICollection<Bookmark> bookmarks, string source)
49+
{
4350
foreach (var folder in rootElement.EnumerateObject())
4451
{
45-
if (folder.Value.ValueKind == JsonValueKind.Object)
52+
if (folder.Value.ValueKind != JsonValueKind.Object)
53+
continue;
54+
55+
// Fix for Opera. It stores bookmarks slightly different than chrome. See PR and bug report for this change for details.
56+
// If various exceptions start to build up here consider splitting this Loader into multiple separate ones.
57+
if (folder.Name == "custom_root")
58+
EnumerateRoot(folder.Value, bookmarks, source);
59+
else
4660
EnumerateFolderBookmark(folder.Value, bookmarks, source);
4761
}
48-
49-
return bookmarks;
5062
}
5163

5264
private void EnumerateFolderBookmark(JsonElement folderElement, ICollection<Bookmark> bookmarks,

0 commit comments

Comments
 (0)