From 724b73072f3da77c3d390b63ca6ef57d76f35075 Mon Sep 17 00:00:00 2001 From: Jonathan Rainville Date: Mon, 2 Nov 2020 14:20:39 -0500 Subject: [PATCH] refactor: get the bookmark image from status-go instead --- src/app/browser/view.nim | 19 +++++++++--------- src/app/browser/views/bookmark_list.nim | 10 +++++----- src/status/libstatus/browser.nim | 22 +++++++++++++++++++++ src/status/libstatus/types.nim | 5 +++++ ui/app/AppLayouts/Browser/BrowserHeader.qml | 2 +- ui/app/AppLayouts/Browser/BrowserLayout.qml | 8 ++------ ui/main.qml | 1 - 7 files changed, 45 insertions(+), 22 deletions(-) create mode 100644 src/status/libstatus/browser.nim diff --git a/src/app/browser/view.nim b/src/app/browser/view.nim index 1bce098095..2807f05206 100644 --- a/src/app/browser/view.nim +++ b/src/app/browser/view.nim @@ -1,7 +1,7 @@ import NimQml, json, chronicles import ../../status/status -import ../../status/libstatus/types as status_types -import ../../status/libstatus/settings as status_settings +import ../../status/libstatus/browser as status_browser +import ../../status/libstatus/types import views/bookmark_list QtObject: @@ -25,9 +25,10 @@ QtObject: proc init*(self: BrowserView) = var bookmarks: seq[Bookmark] = @[] try: - let bookmarksJSON = status_settings.getSetting[string](Setting.Bookmarks, "[]").parseJson - for bookmark in bookmarksJSON: - bookmarks.add(Bookmark(url: bookmark["url"].getStr, name: bookmark["name"].getStr)) + let responseResult = status_browser.getBookmarks().parseJson["result"] + if responseResult.kind != JNull: + for bookmark in responseResult: + bookmarks.add(Bookmark(url: bookmark["url"].getStr, name: bookmark["name"].getStr, imageUrl: bookmark["imageUrl"].getStr)) except: # Bad JSON. Just use the empty array discard @@ -43,8 +44,8 @@ QtObject: notify = bookmarksChanged proc addBookmark*(self: BrowserView, url: string, name: string) {.slot.} = - self.bookmarks.addBookmarkItemToList(Bookmark(url: url, name: name)) - discard status_settings.saveSetting(Setting.Bookmarks, $(%self.bookmarks.bookmarks)) + let bookmark = status_browser.storeBookmark(url, name) + self.bookmarks.addBookmarkItemToList(bookmark) self.bookmarksChanged() proc removeBookmark*(self: BrowserView, url: string) {.slot.} = @@ -52,7 +53,7 @@ QtObject: if index == -1: return self.bookmarks.removeBookmarkItemFromList(index) - discard status_settings.saveSetting(Setting.Bookmarks, $(%self.bookmarks.bookmarks)) + status_browser.deleteBookmark(url) self.bookmarksChanged() proc modifyBookmark*(self: BrowserView, ogUrl: string, newUrl: string, newName: string) {.slot.} = @@ -62,5 +63,5 @@ QtObject: self.addBookmark(newUrl, newName) return self.bookmarks.modifyBookmarkItemFromList(index, newUrl, newName) - discard status_settings.saveSetting(Setting.Bookmarks, $(%self.bookmarks.bookmarks)) + status_browser.updateBookmark(ogUrl, newUrl, newName) self.bookmarksChanged() diff --git a/src/app/browser/views/bookmark_list.nim b/src/app/browser/views/bookmark_list.nim index cab8b4ee42..664720b0d4 100644 --- a/src/app/browser/views/bookmark_list.nim +++ b/src/app/browser/views/bookmark_list.nim @@ -1,15 +1,12 @@ import NimQml, Tables, chronicles import sequtils as sequtils - - -type Bookmark* = ref object - name*: string - url*: string +import ../../../status/libstatus/types type BookmarkRoles {.pure.} = enum Name = UserRole + 1 Url = UserRole + 2 + ImageUrl = UserRole + 3 QtObject: type @@ -36,6 +33,7 @@ QtObject: case column: of "name": result = bookmark.name of "url": result = bookmark.url + of "imageUrl": result = bookmark.imageUrl method data(self: BookmarkList, index: QModelIndex, role: int): QVariant = if not index.isValid: @@ -49,10 +47,12 @@ QtObject: case bookmarkItemRole: of BookmarkRoles.Name: result = newQVariant(bookmarkItem.name) of BookmarkRoles.Url: result = newQVariant(bookmarkItem.url) + of BookmarkRoles.ImageUrl: result = newQVariant(bookmarkItem.imageUrl) method roleNames(self: BookmarkList): Table[int, string] = { BookmarkRoles.Name.int:"name", + BookmarkRoles.ImageUrl.int:"imageUrl", BookmarkRoles.Url.int:"url" }.toTable diff --git a/src/status/libstatus/browser.nim b/src/status/libstatus/browser.nim new file mode 100644 index 0000000000..e18a9a9155 --- /dev/null +++ b/src/status/libstatus/browser.nim @@ -0,0 +1,22 @@ +import core, types, utils, strutils, strformat, json, chronicles + +proc storeBookmark*(url: string, name: string): Bookmark = + let payload = %* [{"url": url, "name": name}] + result = Bookmark(name: name, url: url) + try: + let resp = callPrivateRPC("browsers_storeBookmark", payload).parseJson["result"] + result.imageUrl = resp["imageUrl"].getStr + except: + discard + +proc updateBookmark*(ogUrl: string, url: string, name: string) = + let payload = %* [ogUrl, {"url": url, "name": name}] + discard callPrivateRPC("browsers_updateBookmark", payload) + +proc getBookmarks*(): string = + let payload = %* [] + result = callPrivateRPC("browsers_getBookmarks", payload) + +proc deleteBookmark*(url: string) = + let payload = %* [url] + discard callPrivateRPC("browsers_deleteBookmark", payload) diff --git a/src/status/libstatus/types.nim b/src/status/libstatus/types.nim index 69c04a03ff..c573ba77cd 100644 --- a/src/status/libstatus/types.nim +++ b/src/status/libstatus/types.nim @@ -192,6 +192,11 @@ type PendingTransactionType* {.pure.} = enum BuyStickerPack = "BuyStickerPack" WalletTransfer = "WalletTransfer" +type Bookmark* = ref object + name*: string + url*: string + imageUrl*: string + type Fleet* {.pure.} = enum Prod = "eth.prod", diff --git a/ui/app/AppLayouts/Browser/BrowserHeader.qml b/ui/app/AppLayouts/Browser/BrowserHeader.qml index d6c87537d4..a0f61d3969 100644 --- a/ui/app/AppLayouts/Browser/BrowserHeader.qml +++ b/ui/app/AppLayouts/Browser/BrowserHeader.qml @@ -80,7 +80,7 @@ Rectangle { Connections { target: browserModel onBookmarksChanged: { - addressBar.currentFavorite = getCurrentFavorite(currentWebView.url) + addressBar.currentFavorite = Qt.binding(function () {return getCurrentFavorite(currentWebView.url)}) } } diff --git a/ui/app/AppLayouts/Browser/BrowserLayout.qml b/ui/app/AppLayouts/Browser/BrowserLayout.qml index f83d2c6148..4c8d777694 100644 --- a/ui/app/AppLayouts/Browser/BrowserLayout.qml +++ b/ui/app/AppLayouts/Browser/BrowserLayout.qml @@ -99,15 +99,11 @@ Rectangle { if (index === -1) { return null } - const currentFavicon = currentWebView.icon.toString().replace('image://favicon/', '') - if (!appSettings.bookmarkFavicons[url] || appSettings.bookmarkFavicons[url] !== currentFavicon) { - appSettings.bookmarkFavicons[url] = currentFavicon - } return { url: url, name: browserModel.bookmarks.rowData(index, 'name'), - image: appSettings.bookmarkFavicons[url] || "" + image: browserModel.bookmarks.rowData(index, 'imageUrl') } } @@ -664,7 +660,7 @@ Rectangle { id: bookmarkBtn text: name onClicked: currentWebView.url = url - source: appSettings.bookmarkFavicons[url] || "" + source: imageUrl onRightClicked: { favoriteMenu.url = url favoriteMenu.x = bookmarkList.x + bookmarkBtn.x + mouse.x diff --git a/ui/main.qml b/ui/main.qml index 0809583fba..8789029822 100644 --- a/ui/main.qml +++ b/ui/main.qml @@ -112,7 +112,6 @@ ApplicationWindow { property int fontSize: Constants.fontSizeM // Browser settings - property var bookmarkFavicons: ({}) property bool autoLoadImages: true property bool javaScriptEnabled: true property bool errorPageEnabled: true