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 @@
{% 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 @@
{% 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