More session state with web.

This commit is contained in:
Brad Nelson
2023-06-18 20:24:37 -07:00
parent 2ee77a2572
commit 2e28098c53
2 changed files with 42 additions and 7 deletions

View File

@ -899,6 +899,16 @@ JSWORD: upload-success? { -- f }
return context.filepick_result;
~
JSWORD: raw-download { data data_n mime mime_n filename filename_n -- }
var anchor = document.createElement('a');
var blob = new Blob([u8.slice(data, data + data_n)],
{type: context.GetRawString(u8, mime, mime_n)});
var url = URL.createObjectURL(blob);
anchor.setAttribute('href', url);
anchor.setAttribute('download', context.GetRawString(u8, filename, filename_n));
anchor.click();
~
JSWORD: log { a n -- }
console.log(GetString(a, n));
~

View File

@ -22,6 +22,8 @@ web definitions
' web-key? is key?
' web-terminate is terminate
0 value session?
: upload-file ( a n -- )
upload-start
begin yield upload-done? until
@ -31,17 +33,40 @@ web definitions
: upload ( "filename" ) bl parse dup assert upload-file ;
: include-file { a n -- }
0 0 a n 0 getItem { len }
0 0 a n session? getItem { len }
here { buf } len allot
buf len a n 0 getItem len = assert
a n 0 removeItem
buf len a n session? getItem len = assert
buf len evaluate
;
;
: ls 0 keyCount 0 do pad 80 i 0 getKey pad swap type cr loop ;
: rm bl parse 0 removeItem ;
: cat ( "filename" )
bl parse { name name# }
0 0 name name# session? getItem { len }
here len name name# session? getItem len = assert
here len type
;
: import s" _temp.fs" 2dup upload-file include-file ;
: download ( "filename" )
bl parse { name name# }
0 0 name name# session? getItem { len }
here len name name# session? getItem len = assert
here len s" application/octet-stream"
name name# raw-download
;
: ls
session? keyCount 0 ?do
pad 80 i session? getKey pad swap type cr
loop
;
: rm bl parse session? removeItem ;
: import
s" _temp.fs" 2dup upload-file
2dup >r >r include-file
r> r> session? removeItem
;
: yielding begin 50 ms yield again ;
' yielding 10 10 task yielding-task