Browse Source

just for git history, will delete: add community links

main
familyfriendlymikey 2 years ago
parent
commit
5b858767b3
  1. 118
      app/client.imba
  2. 1
      app/community_links.imba
  3. 14
      app/process_community_links.imba

118
app/client.imba

@ -10,11 +10,12 @@ import { nanoid } from 'nanoid'
import { parse_url } from './utils'
import initial_config from './config'
import { evaluate as eval_math } from 'mathjs'
import community_links from './community_links'
let state = {
query: ''
links: []
scored_links: []
sorted_links: []
}
global._fuzzyhome_delete_everything = do |prompt=yes|
@ -22,6 +23,7 @@ global._fuzzyhome_delete_everything = do |prompt=yes|
indexedDB.deleteDatabase("fuzzyhome")
delete localStorage.fuzzyhome_config
delete localStorage.fuzzyhome_visited
location.reload!
p "fuzzyhome version {version}"
@ -34,20 +36,22 @@ tag app
bang = no
holding_shift = no
editing_link = no
prior_query = ''
viewing_community_links = no
get render? do mounted?
def mount
unless global.localStorage.fuzzyhome_visited
await add_initial_links!
global.localStorage.fuzzyhome_visited = yes
try
await reload_db!
p state.links
p "links:", state.links
catch e
err "loading database", e
fatal_error = yes
return
unless global.localStorage.fuzzyhome_visited
await add_initial_links!
global.localStorage.fuzzyhome_visited = yes
await load_config!
def add_initial_links
@ -72,11 +76,10 @@ tag app
config = JSON.parse(global.localStorage.fuzzyhome_config)
validate_config!
catch
p "resetting config"
reset_config!
def validate_config
p config
p "config:", config
throw _ if config.default_bang.id == null
throw _ if config.default_bang.url == null
throw _ if config.default_bang.icon == null
@ -100,6 +103,9 @@ tag app
state.links = await db.links.toArray()
sort_links!
get selected_link
state.sorted_links[selection_index]
get tip_url
let split_query = state.query.trim!.split /\s+/
if split_query.length >= 2
@ -120,13 +126,23 @@ tag app
name
def sort_links
let links
if viewing_community_links
p community_links
links = community_links.filter do |link|
not state.links.some do |my_link|
link.id is my_link.id
p links
else
links = state.links
if state.query.trim!.length > 0
if config.enable_effective_names
state.scored_links = fzi state.links, state.query
state.sorted_links = fzi links, state.query
else
state.scored_links = fzi state.links, state.query, "display_name"
state.sorted_links = fzi links, state.query, "display_name"
else
state.scored_links = orderBy(state.links, ['is_pinned', 'frequency'], ['desc', 'desc'])
state.sorted_links = orderBy(links, ['is_pinned', 'frequency'], ['desc', 'desc'])
def increment_link_frequency link
try
@ -138,7 +154,7 @@ tag app
settings_active = !settings_active
def increment_selection_index
selection_index = Math.min(state.scored_links.length - 1, selection_index + 1)
selection_index = Math.min(state.sorted_links.length - 1, selection_index + 1)
def decrement_selection_index
selection_index = Math.max(0, selection_index - 1)
@ -227,6 +243,7 @@ tag app
link_text
def handle_edit link
prior_query = state.query
editing_link = link
state.query = construct_link_text(link)
@ -252,7 +269,9 @@ tag app
return new_link
def handle_click_link link
if link.is_bang
if viewing_community_links
add_community_link link
elif link.is_bang
state.query = ''
bang = link
else
@ -271,9 +290,9 @@ tag app
def handle_return
return if editing_link
if bang or state.scored_links.length < 1
if bang or state.sorted_links.length < 1
return handle_bang!
let link = state.scored_links[selection_index]
let link = selected_link
if link.is_bang
state.query = ''
bang = link
@ -300,10 +319,14 @@ tag app
await reload_db!
catch e
err "reloading db after successful delete", e
selection_index = Math.min selection_index, state.scored_links.length - 1
loading = yes
await delete_link!
state.query = prior_query
prior_query = ''
editing_link = no
sort_links!
selection_index = Math.min selection_index, state.sorted_links.length - 1
loading = no
def handle_click_edit link
@ -325,38 +348,50 @@ tag app
config.default_bang = editing_link
save_config!
editing_link = no
state.query = ''
state.query = prior_query
prior_query = ''
sort_links!
def handle_shift_backspace
if editing_link
await handle_delete editing_link
editing_link = no
state.query = ''
sort_links!
else
return unless state.scored_links.length > 0
handle_edit state.scored_links[selection_index]
return unless state.sorted_links.length > 0
handle_edit selected_link
def add_community_link link
await db.links.add link
await reload_db!
imba.commit!
def handle_shift_return
def go
if editing_link
if viewing_community_links
try
await add_community_link selected_link
catch e
err "adding community link", e
elif editing_link
try
await update_link editing_link, state.query
editing_link = no
state.query = ''
sort_links!
catch e
err "updating link", e
else
handle_add!
loading = yes
await go!
editing_link = no
state.query = ''
sort_links!
loading = no
def handle_esc
if editing_link
editing_link = no
state.query = ''
state.query = prior_query
prior_query = ''
elif viewing_community_links
viewing_community_links = no
sort_links!
def handle_click_add
@ -457,6 +492,11 @@ tag app
state.query = ''
sort_links!
def handle_click_view_community_links
viewing_community_links = yes
settings_active = no
sort_links!
def render
css .disabled *
@ -593,6 +633,11 @@ tag app
<.settings-button
@click=(settings_active = no)
> "BACK"
<.settings-container>
<.settings-button
@click.if(!loading)=handle_click_view_community_links
>
"VIEW COMMUNITY LINKS"
<.settings-container>
<label.settings-button>
"IMPORT"
@ -693,7 +738,22 @@ tag app
<.side.right @click.if(!loading)=toggle_settings>
<svg src="./assets/settings.svg">
if config.enable_tips and not config.enable_simplify_ui
if viewing_community_links
<.middle-button>
<.tip[jc:start ta:center fl:1]
@click=handle_esc
>
<.tip-hotkey> "Esc"
<.tip-content> "Exit Community Links"
<.tip[jc:end ta:center fl:1]
@click=handle_shift_return
>
<.tip-hotkey> "Shift + Return"
<.tip-content> "Add To Your Links"
elif config.enable_tips and not config.enable_simplify_ui
if editing_link
<.middle-button>
@ -755,7 +815,7 @@ tag app
unless editing_link
<.links>
if bang or state.scored_links.length < 1
if not viewing_community_links and (bang or state.sorted_links.length < 1)
<a.link.selected
href=encoded_bang_query
@click=handle_click_bang
@ -766,7 +826,7 @@ tag app
<.link-right[jc:flex-end]>
<.frequency> active_bang.frequency
else
for link, index in state.scored_links
for link, index in state.sorted_links
<a.link
href=link.url
@pointerover=(selection_index = index)

1
app/community_links.imba

@ -0,0 +1 @@
export default []

14
app/process_community_links.imba

@ -0,0 +1,14 @@
let p = console.log
const sharp = require 'sharp'
import links from '../app/community_links'
def main
for link in links
data = link.icon.replace(/data:.*base64,/, '')
p data.slice(0, 10)
let buf = Buffer.from(data, 'base64')
buf = await sharp(buf).resize(20, 20).toBuffer!
p buf
# p x.toString("base64")
main!
Loading…
Cancel
Save