allow correcting file transfer data if no files were received

This commit is contained in:
marlon-erler
2026-09-05 02:26:10 +02:00
parent dbc3fd225d
commit e4d162f0ab
9 changed files with 11778 additions and 8849 deletions
+200 -13
View File
@@ -12,8 +12,10 @@ inoremap <silent> <expr> <Down> coc#pum#visible() ? coc#pum#next(0) : coc#inline
inoremap <silent> <expr> <C-P> coc#pum#visible() ? coc#pum#prev(1) : coc#inline#visible() ? coc#inline#prev() : "\" inoremap <silent> <expr> <C-P> coc#pum#visible() ? coc#pum#prev(1) : coc#inline#visible() ? coc#inline#prev() : "\"
inoremap <silent> <expr> <C-N> coc#pum#visible() ? coc#pum#next(1) : coc#inline#visible() ? coc#inline#next() : "\" inoremap <silent> <expr> <C-N> coc#pum#visible() ? coc#pum#next(1) : coc#inline#visible() ? coc#inline#next() : "\"
nnoremap  :NERDTreeFind nnoremap  :NERDTreeFind
snoremap <silent>  c
nnoremap  :NERDTree nnoremap  :NERDTree
nmap  <Plug>(ctrlp) nmap  <Plug>(ctrlp)
snoremap  "_c
nnoremap  :NERDTreeToggle nnoremap  :NERDTreeToggle
xmap \T <Plug>(table-mode-tableize-delimiter) xmap \T <Plug>(table-mode-tableize-delimiter)
xmap \tt <Plug>(table-mode-tableize) xmap \tt <Plug>(table-mode-tableize)
@@ -26,6 +28,10 @@ nnoremap \1 :call SN("1")
nmap \rn <Plug>(coc-rename) nmap \rn <Plug>(coc-rename)
xmap gx <Plug>NetrwBrowseXVis xmap gx <Plug>NetrwBrowseXVis
nmap gx <Plug>NetrwBrowseX nmap gx <Plug>NetrwBrowseX
snoremap <C-R> "_c
snoremap <silent> <C-H> c
snoremap <silent> <Del> c
snoremap <silent> <BS> c
nnoremap <silent> <Plug>GitGutterPreviewHunk :call gitgutter#utility#warn('Please change your map <Plug>GitGutterPreviewHunk to <Plug>(GitGutterPreviewHunk)') nnoremap <silent> <Plug>GitGutterPreviewHunk :call gitgutter#utility#warn('Please change your map <Plug>GitGutterPreviewHunk to <Plug>(GitGutterPreviewHunk)')
nnoremap <silent> <Plug>(GitGutterPreviewHunk) :GitGutterPreviewHunk nnoremap <silent> <Plug>(GitGutterPreviewHunk) :GitGutterPreviewHunk
nnoremap <silent> <Plug>GitGutterUndoHunk :call gitgutter#utility#warn('Please change your map <Plug>GitGutterUndoHunk to <Plug>(GitGutterUndoHunk)') nnoremap <silent> <Plug>GitGutterUndoHunk :call gitgutter#utility#warn('Please change your map <Plug>GitGutterUndoHunk to <Plug>(GitGutterUndoHunk)')
@@ -145,7 +151,9 @@ if &shortmess =~ 'A'
else else
set shortmess=aoO set shortmess=aoO
endif endif
badd +0 src/View/Modals/dataTransferModal.tsx badd +617 src/View/Modals/dataTransferModal.tsx
badd +22 src/View/Modals/storageModal.tsx
badd +0 src/ViewModel/Global/fileTransferViewModel.ts
argglobal argglobal
%argdel %argdel
edit src/View/Modals/dataTransferModal.tsx edit src/View/Modals/dataTransferModal.tsx
@@ -154,7 +162,10 @@ let s:save_splitright = &splitright
set splitbelow splitright set splitbelow splitright
wincmd _ | wincmd | wincmd _ | wincmd |
vsplit vsplit
1wincmd h wincmd _ | wincmd |
vsplit
2wincmd h
wincmd w
wincmd w wincmd w
let &splitbelow = s:save_splitbelow let &splitbelow = s:save_splitbelow
let &splitright = s:save_splitright let &splitright = s:save_splitright
@@ -165,11 +176,12 @@ set winminheight=0
set winheight=1 set winheight=1
set winminwidth=0 set winminwidth=0
set winwidth=1 set winwidth=1
exe 'vert 1resize ' . ((&columns * 31 + 126) / 253) exe 'vert 1resize ' . ((&columns * 31 + 116) / 233)
exe 'vert 2resize ' . ((&columns * 221 + 126) / 253) exe 'vert 2resize ' . ((&columns * 100 + 116) / 233)
exe 'vert 3resize ' . ((&columns * 100 + 116) / 233)
argglobal argglobal
enew enew
file NERD_tree_tab_1 file NERD_tree_tab_2
balt src/View/Modals/dataTransferModal.tsx balt src/View/Modals/dataTransferModal.tsx
let s:cpo_save=&cpo let s:cpo_save=&cpo
set cpo&vim set cpo&vim
@@ -193,6 +205,14 @@ nnoremap <buffer> <silent> R :call nerdtree#ui_glue#invokeKeyMap("R")
nnoremap <buffer> <silent> T :call nerdtree#ui_glue#invokeKeyMap("T") nnoremap <buffer> <silent> T :call nerdtree#ui_glue#invokeKeyMap("T")
nnoremap <buffer> <silent> U :call nerdtree#ui_glue#invokeKeyMap("U") nnoremap <buffer> <silent> U :call nerdtree#ui_glue#invokeKeyMap("U")
nnoremap <buffer> <silent> X :call nerdtree#ui_glue#invokeKeyMap("X") nnoremap <buffer> <silent> X :call nerdtree#ui_glue#invokeKeyMap("X")
nmap <buffer> [c <Plug>(GitGutterPrevHunk)
nmap <buffer> \hp <Plug>(GitGutterPreviewHunk)
nmap <buffer> \hu <Plug>(GitGutterUndoHunk)
nmap <buffer> \hs <Plug>(GitGutterStageHunk)
xmap <buffer> \hs <Plug>(GitGutterStageHunk)
nmap <buffer> ]c <Plug>(GitGutterNextHunk)
xmap <buffer> ac <Plug>(GitGutterTextObjectOuterVisual)
omap <buffer> ac <Plug>(GitGutterTextObjectOuterPending)
nnoremap <buffer> <silent> cd :call nerdtree#ui_glue#invokeKeyMap("cd") nnoremap <buffer> <silent> cd :call nerdtree#ui_glue#invokeKeyMap("cd")
nnoremap <buffer> <silent> e :call nerdtree#ui_glue#invokeKeyMap("e") nnoremap <buffer> <silent> e :call nerdtree#ui_glue#invokeKeyMap("e")
nnoremap <buffer> <silent> f :call nerdtree#ui_glue#invokeKeyMap("f") nnoremap <buffer> <silent> f :call nerdtree#ui_glue#invokeKeyMap("f")
@@ -200,6 +220,8 @@ nnoremap <buffer> <silent> go :call nerdtree#ui_glue#invokeKeyMap("go")
nnoremap <buffer> <silent> gb :call nerdtree#ui_glue#invokeKeyMap("gb") nnoremap <buffer> <silent> gb :call nerdtree#ui_glue#invokeKeyMap("gb")
nnoremap <buffer> <silent> gi :call nerdtree#ui_glue#invokeKeyMap("gi") nnoremap <buffer> <silent> gi :call nerdtree#ui_glue#invokeKeyMap("gi")
nnoremap <buffer> <silent> gs :call nerdtree#ui_glue#invokeKeyMap("gs") nnoremap <buffer> <silent> gs :call nerdtree#ui_glue#invokeKeyMap("gs")
xmap <buffer> ic <Plug>(GitGutterTextObjectInnerVisual)
omap <buffer> ic <Plug>(GitGutterTextObjectInnerPending)
nnoremap <buffer> <silent> i :call nerdtree#ui_glue#invokeKeyMap("i") nnoremap <buffer> <silent> i :call nerdtree#ui_glue#invokeKeyMap("i")
nnoremap <buffer> <silent> m :call nerdtree#ui_glue#invokeKeyMap("m") nnoremap <buffer> <silent> m :call nerdtree#ui_glue#invokeKeyMap("m")
nnoremap <buffer> <silent> o :call nerdtree#ui_glue#invokeKeyMap("o") nnoremap <buffer> <silent> o :call nerdtree#ui_glue#invokeKeyMap("o")
@@ -350,7 +372,7 @@ setlocal nowrap
setlocal wrapmargin=0 setlocal wrapmargin=0
wincmd w wincmd w
argglobal argglobal
balt src/View/Modals/dataTransferModal.tsx balt src/View/Modals/storageModal.tsx
let s:cpo_save=&cpo let s:cpo_save=&cpo
set cpo&vim set cpo&vim
nmap <buffer> [c <Plug>(GitGutterPrevHunk) nmap <buffer> [c <Plug>(GitGutterPrevHunk)
@@ -498,16 +520,182 @@ setlocal wrap
setlocal wrapmargin=0 setlocal wrapmargin=0
silent! normal! zE silent! normal! zE
let &fdl = &fdl let &fdl = &fdl
let s:l = 1 - ((0 * winheight(0) + 20) / 40) let s:l = 615 - ((22 * winheight(0) + 18) / 36)
if s:l < 1 | let s:l = 1 | endif if s:l < 1 | let s:l = 1 | endif
keepjumps exe s:l keepjumps exe s:l
normal! zt normal! zt
keepjumps 1 keepjumps 615
normal! 0 normal! 0142|
wincmd w wincmd w
2wincmd w argglobal
exe 'vert 1resize ' . ((&columns * 31 + 126) / 253) if bufexists(fnamemodify("src/ViewModel/Global/fileTransferViewModel.ts", ":p")) | buffer src/ViewModel/Global/fileTransferViewModel.ts | else | edit src/ViewModel/Global/fileTransferViewModel.ts | endif
exe 'vert 2resize ' . ((&columns * 221 + 126) / 253) balt src/View/Modals/dataTransferModal.tsx
let s:cpo_save=&cpo
set cpo&vim
imap <buffer> <nowait> <silent> <C-K> <Cmd>:call coc#snippet#jump(0, 0)
imap <buffer> <nowait> <silent> <C-J> <Cmd>:call coc#snippet#jump(1, 0)
smap <buffer> <nowait> <silent> <NL> <Cmd>:call coc#snippet#jump(1, 0)
smap <buffer> <nowait> <silent>  <Cmd>:call coc#snippet#jump(0, 0)
nmap <buffer> [c <Plug>(GitGutterPrevHunk)
nmap <buffer> \hp <Plug>(GitGutterPreviewHunk)
nmap <buffer> \hu <Plug>(GitGutterUndoHunk)
nmap <buffer> \hs <Plug>(GitGutterStageHunk)
xmap <buffer> \hs <Plug>(GitGutterStageHunk)
nmap <buffer> ]c <Plug>(GitGutterNextHunk)
xmap <buffer> ac <Plug>(GitGutterTextObjectOuterVisual)
omap <buffer> ac <Plug>(GitGutterTextObjectOuterPending)
xmap <buffer> ic <Plug>(GitGutterTextObjectInnerVisual)
omap <buffer> ic <Plug>(GitGutterTextObjectInnerPending)
smap <buffer> <nowait> <silent> <C-K> <Cmd>:call coc#snippet#jump(0, 0)
smap <buffer> <nowait> <silent> <C-J> <Cmd>:call coc#snippet#jump(1, 0)
imap <buffer> <nowait> <silent> <NL> <Cmd>:call coc#snippet#jump(1, 0)
imap <buffer> <nowait> <silent>  <Cmd>:call coc#snippet#jump(0, 0)
let &cpo=s:cpo_save
unlet s:cpo_save
setlocal keymap=
setlocal noarabic
setlocal autoindent
setlocal backupcopy=
setlocal balloonexpr=
setlocal nobinary
setlocal nobreakindent
setlocal breakindentopt=
setlocal bufhidden=
setlocal buflisted
setlocal buftype=
setlocal nocindent
setlocal cinkeys=0{,0},0),0],:,0#,!^F,o,O,e
setlocal cinoptions=
setlocal cinscopedecls=public,protected,private
setlocal cinwords=if,else,while,do,for,switch
setlocal colorcolumn=
setlocal comments=s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-
setlocal commentstring=//\ %s
setlocal complete=.,w,b,u,t,i
setlocal concealcursor=
setlocal conceallevel=0
setlocal completefunc=
setlocal nocopyindent
setlocal cryptmethod=
setlocal nocursorbind
setlocal nocursorcolumn
setlocal nocursorline
setlocal cursorlineopt=both
setlocal define=
setlocal dictionary=
setlocal nodiff
setlocal equalprg=
setlocal errorformat=%+A\ %#%f\ %#(%l\\,%c):\ %m,%C%m
setlocal noexpandtab
if &filetype != 'typescript'
setlocal filetype=typescript
endif
setlocal fillchars=
setlocal fixendofline
setlocal foldcolumn=0
setlocal foldenable
setlocal foldexpr=0
setlocal foldignore=#
setlocal foldlevel=0
setlocal foldmarker={{{,}}}
setlocal foldmethod=manual
setlocal foldminlines=1
setlocal foldnestmax=20
setlocal foldtext=foldtext()
setlocal formatexpr=
setlocal formatoptions=croql
setlocal formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s*
setlocal formatprg=
setlocal grepprg=
setlocal iminsert=0
setlocal imsearch=-1
setlocal include=
setlocal includeexpr=
setlocal indentexpr=GetTypescriptIndent()
setlocal indentkeys=0{,0},0),0],:,0#,!^F,o,O,e,0],0)
setlocal noinfercase
setlocal iskeyword=@,48-57,_,192-255,$
setlocal keywordprg=
setlocal nolinebreak
setlocal nolisp
setlocal lispoptions=
setlocal lispwords=
setlocal nolist
setlocal listchars=
setlocal makeencoding=
setlocal makeprg=tsc\ \ $*\ %
setlocal matchpairs=(:),{:},[:]
setlocal nomodeline
setlocal modifiable
setlocal nrformats=bin,octal,hex
set number
setlocal number
setlocal numberwidth=4
setlocal omnifunc=
setlocal path=
setlocal nopreserveindent
setlocal nopreviewwindow
setlocal quoteescape=\\
setlocal noreadonly
setlocal norelativenumber
setlocal norightleft
setlocal rightleftcmd=search
setlocal noscrollbind
setlocal scrolloff=-1
setlocal shiftwidth=4
setlocal noshortname
setlocal showbreak=
setlocal sidescrolloff=-1
set signcolumn=yes
setlocal signcolumn=yes
setlocal nosmartindent
setlocal nosmoothscroll
setlocal softtabstop=0
setlocal nospell
setlocal spellcapcheck=[.?!]\\_[\\])'\"\ \ ]\\+
setlocal spellfile=
setlocal spelllang=en
setlocal spelloptions=
setlocal statusline=
setlocal suffixesadd=.ts,.tsx
setlocal swapfile
setlocal synmaxcol=3000
if &syntax != 'typescript'
setlocal syntax=typescript
endif
setlocal tabstop=8
setlocal tagcase=
setlocal tagfunc=
setlocal tags=
setlocal termwinkey=
setlocal termwinscroll=10000
setlocal termwinsize=
setlocal textwidth=0
setlocal thesaurus=
setlocal thesaurusfunc=
setlocal noundofile
setlocal undolevels=-123456
setlocal varsofttabstop=
setlocal vartabstop=
setlocal virtualedit=
setlocal wincolor=
setlocal nowinfixheight
setlocal nowinfixwidth
setlocal wrap
setlocal wrapmargin=0
silent! normal! zE
let &fdl = &fdl
let s:l = 74 - ((13 * winheight(0) + 18) / 36)
if s:l < 1 | let s:l = 1 | endif
keepjumps exe s:l
normal! zt
keepjumps 74
normal! 0140|
wincmd w
3wincmd w
exe 'vert 1resize ' . ((&columns * 31 + 116) / 233)
exe 'vert 2resize ' . ((&columns * 100 + 116) / 233)
exe 'vert 3resize ' . ((&columns * 100 + 116) / 233)
tabnext 1 tabnext 1
if exists('s:wipebuf') && len(win_findbuf(s:wipebuf)) == 0 if exists('s:wipebuf') && len(win_findbuf(s:wipebuf)) == 0
silent exe 'bwipe ' . s:wipebuf silent exe 'bwipe ' . s:wipebuf
@@ -522,7 +710,6 @@ if filereadable(s:sx)
exe "source " . fnameescape(s:sx) exe "source " . fnameescape(s:sx)
endif endif
let &g:so = s:so_save | let &g:siso = s:siso_save let &g:so = s:so_save | let &g:siso = s:siso_save
nohlsearch
doautoall SessionLoadPost doautoall SessionLoadPost
unlet SessionLoad unlet SessionLoad
" vim: set ft=vim : " vim: set ft=vim :
+755 -676
View File
File diff suppressed because it is too large Load Diff
+10630 -7986
View File
File diff suppressed because it is too large Load Diff
Vendored
+1 -1
View File
@@ -22,7 +22,7 @@ async function getFromCache(event) {
async function fetchAndCache(event) { async function fetchAndCache(event) {
const request = event.request; const request = event.request;
const response = await fetch(request, {cache: "no-cache"}); const response = await fetch(request, { cache: "no-cache" });
if (response.status === 200) { if (response.status === 200) {
// Only cache successful responses // Only cache successful responses
const cache = await caches.open(CACHE_VERSION); const cache = await caches.open(CACHE_VERSION);
+49 -49
View File
@@ -335,64 +335,64 @@ export function implementPinchZoom(canvas: HTMLElement) {
} }
canvas.addEventListener("touchstart", (event: TouchEvent) => { canvas.addEventListener("touchstart", (event: TouchEvent) => {
(document.activeElement as HTMLElement).blur(); (document.activeElement as HTMLElement).blur();
if (lastElement != undefined && lastElement != element()) reset(); if (lastElement != undefined && lastElement != element()) reset();
lastElement = element(); lastElement = element();
initialZoom = currentZoom; initialZoom = currentZoom;
initialX = currentX; initialX = currentX;
initialY = currentY; initialY = currentY;
if (event.touches.length != 2) { if (event.touches.length != 2) {
pinching = false; pinching = false;
initialTouchX = event.touches[0].clientX; initialTouchX = event.touches[0].clientX;
initialTouchY = event.touches[0].clientY; initialTouchY = event.touches[0].clientY;
return; return;
} }
pinching = true; pinching = true;
initialDistance = distance(event); initialDistance = distance(event);
initialTouchX = midpoint(event, "x"); initialTouchX = midpoint(event, "x");
initialTouchY = midpoint(event, "y"); initialTouchY = midpoint(event, "y");
}); });
canvas.addEventListener("touchmove", (event: TouchEvent) => { canvas.addEventListener("touchmove", (event: TouchEvent) => {
if (!pinching) { if (!pinching) {
apply(currentZoom, [ apply(currentZoom, [
initialX + initialX +
(event.touches[0].clientX - initialTouchX) / initialZoom, (event.touches[0].clientX - initialTouchX) / initialZoom,
initialY + initialY +
(event.touches[0].clientY - initialTouchY) / initialZoom, (event.touches[0].clientY - initialTouchY) / initialZoom,
]); ]);
return; return;
} }
if (event.touches.length < 2) return; if (event.touches.length < 2) return;
event.preventDefault(); event.preventDefault();
const currentDistance = distance(event); const currentDistance = distance(event);
const midX = midpoint(event, "x"); const midX = midpoint(event, "x");
const midY = midpoint(event, "y"); const midY = midpoint(event, "y");
const ratio = currentDistance / initialDistance; const ratio = currentDistance / initialDistance;
const difference = currentDistance - initialDistance; const difference = currentDistance - initialDistance;
apply(initialZoom * ratio, [ apply(initialZoom * ratio, [
initialX + (midX - difference - initialTouchX) / initialZoom, initialX + (midX - difference - initialTouchX) / initialZoom,
initialY + (midY - difference - initialTouchY) / initialZoom, initialY + (midY - difference - initialTouchY) / initialZoom,
]); ]);
}); });
canvas.addEventListener("wheel", (event: WheelEvent) => { canvas.addEventListener("wheel", (event: WheelEvent) => {
event.preventDefault(); event.preventDefault();
if (!event.shiftKey) { if (!event.shiftKey) {
apply(currentZoom, [ apply(currentZoom, [
currentX - event.deltaX, currentX - event.deltaX,
currentY - event.deltaY, currentY - event.deltaY,
]); ]);
return; return;
} }
apply(currentZoom + (event.deltaY < 0 ? 1 : -1) * 0.1, [ apply(currentZoom + (event.deltaY < 0 ? 1 : -1) * 0.1, [
initialX, initialX,
initialY, initialY,
]); ]);
}); });
canvas.addEventListener("scroll", (event: MouseEvent) => { canvas.addEventListener("scroll", (event: MouseEvent) => {
event.preventDefault(); event.preventDefault();
}); });
} }
+114 -112
View File
@@ -45,125 +45,127 @@ export function BoardPage(
}), }),
); );
const wrapper = <div class="content main-content" children:set={pages}></div> const wrapper = (
Utility.implementPinchZoom(wrapper); <div class="content main-content" children:set={pages}></div>
);
Utility.implementPinchZoom(wrapper);
// task modal // task modal
const taskSettingsModal = React.createProxyState( const taskSettingsModal = React.createProxyState(
[boardViewModel.selectedTaskViewModel], [boardViewModel.selectedTaskViewModel],
() => { () => {
if (boardViewModel.selectedTaskViewModel.value == undefined) { if (boardViewModel.selectedTaskViewModel.value == undefined) {
return <div></div>; return <div></div>;
} else { } else {
ViewController.setFocusWithDelay(); ViewController.setFocusWithDelay();
return TaskSettingsModal( return TaskSettingsModal(
coreViewModel, coreViewModel,
boardViewModel.selectedTaskViewModel.value, boardViewModel.selectedTaskViewModel.value,
); );
} }
}, },
); );
return ( return (
<div class="pane"> <div class="pane">
<div class="toolbar"> <div class="toolbar">
<span> <span>
<button <button
class="ghost board-close-button" class="ghost board-close-button"
aria-label={ aria-label={
coreViewModel.translations.chatPage.task coreViewModel.translations.chatPage.task
.closeBoardButtonAudioLabel .closeBoardButtonAudioLabel
} }
on:click={boardViewModel.close} on:click={boardViewModel.close}
> >
<span class="icon">arrow_back</span> <span class="icon">arrow_back</span>
</button> </button>
<button <button
class="ghost board-toggle-button inset-outline" class="ghost board-toggle-button inset-outline"
aria-label={ aria-label={
coreViewModel.translations.chatPage.task coreViewModel.translations.chatPage.task
.toggleBoardButtonAudioLabel .toggleBoardButtonAudioLabel
} }
on:click={ on:click={
boardViewModel.taskPageViewModel.toggleBoardList boardViewModel.taskPageViewModel.toggleBoardList
} }
toggle:selected={ toggle:selected={
boardViewModel.taskPageViewModel.isShowingBoadList boardViewModel.taskPageViewModel.isShowingBoadList
} }
> >
<span class="icon">dock_to_right</span> <span class="icon">dock_to_right</span>
</button> </button>
<button <button
class="ghost" class="ghost"
aria-label={ aria-label={
coreViewModel.translations.chatPage.task coreViewModel.translations.chatPage.task
.boardSettingsHeadline .boardSettingsHeadline
} }
on:click={boardViewModel.showSettings} on:click={boardViewModel.showSettings}
> >
<span class="icon">settings</span> <span class="icon">settings</span>
</button> </button>
</span> </span>
<span class="scroll-h ribbon"> <span class="scroll-h ribbon">
{BoardViewToggleButton( {BoardViewToggleButton(
coreViewModel.translations.chatPage.task coreViewModel.translations.chatPage.task
.listViewButtonAudioLabel, .listViewButtonAudioLabel,
"view_list", "view_list",
BoardPageTypes.List, BoardPageTypes.List,
boardViewModel, boardViewModel,
)} )}
{BoardViewToggleButton( {BoardViewToggleButton(
coreViewModel.translations.chatPage.task coreViewModel.translations.chatPage.task
.kanbanViewButtonAudioLabel, .kanbanViewButtonAudioLabel,
"view_kanban", "view_kanban",
BoardPageTypes.Kanban, BoardPageTypes.Kanban,
boardViewModel, boardViewModel,
)} )}
{BoardViewToggleButton( {BoardViewToggleButton(
coreViewModel.translations.chatPage.task coreViewModel.translations.chatPage.task
.statusViewButtonAudioLabel, .statusViewButtonAudioLabel,
"grid_view", "grid_view",
BoardPageTypes.StatusGrid, BoardPageTypes.StatusGrid,
boardViewModel, boardViewModel,
)} )}
</span> </span>
<span> <span>
<button <button
class="ghost inset-outline" class="ghost inset-outline"
aria-label={ aria-label={
coreViewModel.translations.chatPage.task coreViewModel.translations.chatPage.task
.filterTasksButtonAudioLabel .filterTasksButtonAudioLabel
} }
on:click={boardViewModel.showFilterModal} on:click={boardViewModel.showFilterModal}
toggle:selected={boardViewModel.isFilterActive} toggle:selected={boardViewModel.isFilterActive}
> >
<span class="icon">filter_alt</span> <span class="icon">filter_alt</span>
</button> </button>
<button <button
class="ghost" class="ghost"
aria-label={ aria-label={
coreViewModel.translations.chatPage.task coreViewModel.translations.chatPage.task
.createTaskButtonAudioLabel .createTaskButtonAudioLabel
} }
on:click={boardViewModel.createTask} on:click={boardViewModel.createTask}
> >
<span class="icon">add</span> <span class="icon">add</span>
</button> </button>
</span> </span>
</div> </div>
{wrapper} {wrapper}
{BoardSettingsModal(coreViewModel, boardViewModel)} {BoardSettingsModal(coreViewModel, boardViewModel)}
{SearchModal( {SearchModal(
coreViewModel, coreViewModel,
boardViewModel.searchViewModel, boardViewModel.searchViewModel,
coreViewModel.translations.chatPage.task.filterTasksHeadline, coreViewModel.translations.chatPage.task.filterTasksHeadline,
TaskViewModelToEntry, TaskViewModelToEntry,
boardViewModel.isPresentingFilterModal, boardViewModel.isPresentingFilterModal,
)} )}
<div children:set={taskSettingsModal}></div> <div children:set={taskSettingsModal}></div>
</div> </div>
); );
} }
Binary file not shown.
+24 -11
View File
@@ -375,7 +375,7 @@ function TransferDisplayModal(
coreViewModel.translations.dataTransferModal coreViewModel.translations.dataTransferModal
.transferDataHeadline .transferDataHeadline
} }
</h2> </h2>
<p <p
class="secondary" class="secondary"
@@ -394,11 +394,11 @@ function TransferDisplayModal(
coreViewModel.translations.dataTransferModal coreViewModel.translations.dataTransferModal
.allFilesSent .allFilesSent
} }
</p> </p>
<hr></hr> <hr></hr>
<div class="flex-column gap content-margin-bottom"> <div class="flex-column gap content-margin-bottom">
<div class="tile"> <div class="tile">
<span class="icon">forum</span> <span class="icon">forum</span>
<div> <div>
@@ -514,8 +514,8 @@ function TransferDataInputModal(
.transferChannelHeadline .transferChannelHeadline
} }
</span> </span>
<input <input
type="number" type="number"
on:enter={ on:enter={
fileTransferViewModel.prepareReceivingData fileTransferViewModel.prepareReceivingData
} }
@@ -536,7 +536,7 @@ function TransferDataInputModal(
} }
</span> </span>
<input <input
type="number" type="number"
on:enter={ on:enter={
fileTransferViewModel.prepareReceivingData fileTransferViewModel.prepareReceivingData
} }
@@ -612,10 +612,23 @@ function DataReceptionModal(
]} ]}
></div> ></div>
</main> </main>
<button on:click={ViewController.reload}> <div class="flex-row width-100">
{coreViewModel.translations.general.reloadAppButton} <button
<span class="icon">refresh</span> class="flex"
</button> on:click={
fileTransferViewModel.showTransferDataInputModal
}
toggle:disabled={
fileTransferViewModel.cannotExitReception
}
>
{coreViewModel.translations.general.backButton}
</button>
<button class="flex" on:click={ViewController.reload}>
{coreViewModel.translations.general.reloadAppButton}
<span class="icon">refresh</span>
</button>
</div>
</div> </div>
</div> </div>
); );
@@ -71,6 +71,10 @@ export default class FileTransferViewModel extends Context {
this.receivingTransferChannel.value == "" || this.receivingTransferChannel.value == "" ||
this.receivingTransferKey.value == "", this.receivingTransferKey.value == "",
); );
cannotExitReception: React.State<boolean> = React.createProxyState(
[this.filePathsReceived],
() => this.filePathsReceived.value.size > 0,
);
cannotExport: React.State<boolean> = React.createProxyState( cannotExport: React.State<boolean> = React.createProxyState(
[this.exportKey, this.exportKeyConfirmation], [this.exportKey, this.exportKeyConfirmation],