forked from Mirrorlandia_minetest/minetest
ContentDB: Order installed content first (#10864)
This commit is contained in:
parent
44a9510c81
commit
82deed2d7d
@ -23,7 +23,9 @@ if not minetest.get_http_api then
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local store = { packages = {}, packages_full = {} }
|
-- Unordered preserves the original order of the ContentDB API,
|
||||||
|
-- before the package list is ordered based on installed state.
|
||||||
|
local store = { packages = {}, packages_full = {}, packages_full_unordered = {} }
|
||||||
|
|
||||||
local http = minetest.get_http_api()
|
local http = minetest.get_http_api()
|
||||||
|
|
||||||
@ -572,6 +574,7 @@ function store.load()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
store.packages_full_unordered = store.packages_full
|
||||||
store.packages = store.packages_full
|
store.packages = store.packages_full
|
||||||
store.loaded = true
|
store.loaded = true
|
||||||
end
|
end
|
||||||
@ -619,6 +622,33 @@ function store.update_paths()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function store.sort_packages()
|
||||||
|
local ret = {}
|
||||||
|
|
||||||
|
-- Add installed content
|
||||||
|
for i=1, #store.packages_full_unordered do
|
||||||
|
local package = store.packages_full_unordered[i]
|
||||||
|
if package.path then
|
||||||
|
ret[#ret + 1] = package
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Sort installed content by title
|
||||||
|
table.sort(ret, function(a, b)
|
||||||
|
return a.title < b.title
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Add uninstalled content
|
||||||
|
for i=1, #store.packages_full_unordered do
|
||||||
|
local package = store.packages_full_unordered[i]
|
||||||
|
if not package.path then
|
||||||
|
ret[#ret + 1] = package
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
store.packages_full = ret
|
||||||
|
end
|
||||||
|
|
||||||
function store.filter_packages(query)
|
function store.filter_packages(query)
|
||||||
if query == "" and filter_type == 1 then
|
if query == "" and filter_type == 1 then
|
||||||
store.packages = store.packages_full
|
store.packages = store.packages_full
|
||||||
@ -652,7 +682,6 @@ function store.filter_packages(query)
|
|||||||
store.packages[#store.packages + 1] = package
|
store.packages[#store.packages + 1] = package
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function store.get_formspec(dlgdata)
|
function store.get_formspec(dlgdata)
|
||||||
@ -960,6 +989,9 @@ function create_store_dlg(type)
|
|||||||
store.load()
|
store.load()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
store.update_paths()
|
||||||
|
store.sort_packages()
|
||||||
|
|
||||||
search_string = ""
|
search_string = ""
|
||||||
cur_page = 1
|
cur_page = 1
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user