diff --git a/bookmarks/components/SearchAutoComplete.svelte b/bookmarks/components/SearchAutoComplete.svelte index 130c7c9..5d1b5e3 100644 --- a/bookmarks/components/SearchAutoComplete.svelte +++ b/bookmarks/components/SearchAutoComplete.svelte @@ -8,6 +8,7 @@ export let placeholder; export let value; export let tags; + export let mode = 'default'; export let apiClient; let isFocus = false; @@ -111,7 +112,9 @@ let bookmarks = [] if (value && value.length >= 3) { - const fetchedBookmarks = await apiClient.getBookmarks(value, {limit: 5, offset: 0}) + const fetchedBookmarks = mode === 'archive' + ? await apiClient.getArchivedBookmarks(value, {limit: 5, offset: 0}) + : await apiClient.getBookmarks(value, {limit: 5, offset: 0}) bookmarks = fetchedBookmarks.map(bookmark => { const fullLabel = bookmark.title || bookmark.website_title || bookmark.url const label = clampText(fullLabel, 60) diff --git a/bookmarks/components/api.js b/bookmarks/components/api.js index 89f314c..292c892 100644 --- a/bookmarks/components/api.js +++ b/bookmarks/components/api.js @@ -11,4 +11,13 @@ export class ApiClient { .then(response => response.json()) .then(data => data.results) } + + getArchivedBookmarks(query, options = {limit: 100, offset: 0}) { + const encodedQuery = encodeURIComponent(query) + const url = `${this.baseUrl}bookmarks/archived?q=${encodedQuery}&limit=${options.limit}&offset=${options.offset}` + + return fetch(url) + .then(response => response.json()) + .then(data => data.results) + } } \ No newline at end of file diff --git a/bookmarks/templates/bookmarks/archive.html b/bookmarks/templates/bookmarks/archive.html index 9f4f0e8..7ebfb1e 100644 --- a/bookmarks/templates/bookmarks/archive.html +++ b/bookmarks/templates/bookmarks/archive.html @@ -11,7 +11,7 @@

Archived bookmarks

- {% include 'bookmarks/search.html' %} + {% bookmark_search query tags mode='archive' %}
{% if empty %} diff --git a/bookmarks/templates/bookmarks/index.html b/bookmarks/templates/bookmarks/index.html index efb3683..3f33294 100644 --- a/bookmarks/templates/bookmarks/index.html +++ b/bookmarks/templates/bookmarks/index.html @@ -11,7 +11,7 @@

Bookmarks

- {% include 'bookmarks/search.html' %} + {% bookmark_search query tags %}
{% if empty %} diff --git a/bookmarks/templates/bookmarks/search.html b/bookmarks/templates/bookmarks/search.html index 661b854..c591cd5 100644 --- a/bookmarks/templates/bookmarks/search.html +++ b/bookmarks/templates/bookmarks/search.html @@ -25,6 +25,7 @@ placeholder: 'Search for words or #tags', value: '{{ query }}', tags: currentTags, + mode: '{{ mode }}', apiClient } }) diff --git a/bookmarks/templatetags/bookmarks.py b/bookmarks/templatetags/bookmarks.py index 80d76f4..8ef1274 100644 --- a/bookmarks/templatetags/bookmarks.py +++ b/bookmarks/templatetags/bookmarks.py @@ -61,3 +61,14 @@ def bookmark_list(context, bookmarks: Page, return_url: str): 'bookmarks': bookmarks, 'return_url': return_url } + + +@register.inclusion_tag('bookmarks/search.html', name='bookmark_search', takes_context=True) +def bookmark_search(context, query: str, tags: [Tag], mode: str = 'default'): + tag_names = [tag.name for tag in tags] + tags_string = build_tag_string(tag_names, ' ') + return { + 'query': query, + 'tags_string': tags_string, + 'mode': mode, + } diff --git a/bookmarks/views/bookmarks.py b/bookmarks/views/bookmarks.py index c06446e..952a987 100644 --- a/bookmarks/views/bookmarks.py +++ b/bookmarks/views/bookmarks.py @@ -38,8 +38,6 @@ def get_bookmark_view_context(request, query_set, tags, base_url): query_string = request.GET.get('q') paginator = Paginator(query_set, _default_page_size) bookmarks = paginator.get_page(page) - tag_names = [tag.name for tag in tags] - tags_string = build_tag_string(tag_names, ' ') return_url = generate_return_url(base_url, page, query_string) if request.GET.get('tag'): @@ -50,7 +48,6 @@ def get_bookmark_view_context(request, query_set, tags, base_url): return { 'bookmarks': bookmarks, 'tags': tags, - 'tags_string': tags_string, 'query': query_string if query_string else '', 'empty': paginator.count == 0, 'return_url': return_url