diff --git a/TODO.md b/TODO.md index 8b2d997..0464f3d 100644 --- a/TODO.md +++ b/TODO.md @@ -6,6 +6,10 @@ - [ ] File upload multiline description (window) - [x] Permission checkboxes for file upload/edit - [ ] More intuitive navigation between nested groups (by pressing left and right buttons) +- [ ] Cancel upload/download + +## Bugs: +- [ ] Sometimes segfaults while navigating through modal menu (try use controlling byte) ## Features: - [x] Search files diff --git a/src/file_processor.c b/src/file_processor.c index 4f1cbb7..f8bda0a 100644 --- a/src/file_processor.c +++ b/src/file_processor.c @@ -48,7 +48,7 @@ void file_list(file_args_t *f_args, query_args_t *q_args) { } draw_file_list(fui); free(query); - q_args->state = S_FILE_SELECT; + q_args->state = WAIT_CLIENT; break; } strcat(qbuf, query); @@ -64,63 +64,6 @@ void file_list(file_args_t *f_args, query_args_t *q_args) { } } -/* file_select: old function, can be removed in the future */ -void file_select(file_args_t *f_args, query_args_t *q_args) { - char *buf = q_args->buf; - fl_item_t *l_start = f_args->l_start; - // fl_item_t *l_current = f_args->l_current; - fl_item_t *l_selected; /* from the list */ - fl_item_t *f_selected = - &(f_args->f_selected); /* new copy of file struct (list be cleared) */ - uint32_t filenum; - uint32_t qlen; - char send_buf[256]; - struct stat st = {0}; - - if (!(sscanf(buf, "%u", &filenum))) { - write(q_args->sd, buf, strlen(buf)); - q_args->state = S_FILE_LIST; - fl_clear(&f_args->l_start, &f_args->l_current); - return; - } - - if (filenum == 0) { - q_args->state = WAIT_CLIENT; - return; - } - l_selected = fl_select(l_start, filenum); - - if (l_selected == NULL) { - printf("Selected number is not correct!\nPlease try again!\n"); - return; - } - - memcpy(f_selected, l_selected, sizeof(*f_selected)); - - if (stat(DOWNLOADS_DIR, &st) == -1) { - mkdir(DOWNLOADS_DIR, 0700); - } - char *file_path = malloc(sizeof(DOWNLOADS_DIR) + strlen(l_selected->name) + - 2); // + '/' + '\0' - f_selected->name = NULL; - sprintf(file_path, "%s/%s", DOWNLOADS_DIR, l_selected->name); - f_selected->name = strdup(l_selected->name); - fl_clear(&f_args->l_start, &f_args->l_current); - f_args->file_d = open(file_path, O_WRONLY | O_CREAT | O_TRUNC, 0666); - if (f_args->file_d == -1) { - qlen = sprintf(send_buf, "error: %s\n", f_selected->name); - write(q_args->sd, send_buf, qlen); - perror(f_selected->name); - q_args->state = WAIT_CLIENT; - free(file_path); - return; - } - qlen = sprintf(send_buf, "file download %s\n", f_selected->name); - write(q_args->sd, send_buf, qlen); - q_args->state = S_FILE_DOWNLOAD; - free(file_path); -} - int32_t ui_file_select(file_args_t *f_args, query_args_t *q_args, int32_t idx) { fl_item_t *l_selected; /* from the list */ fl_item_t *f_selected = @@ -155,7 +98,7 @@ int32_t ui_file_select(file_args_t *f_args, query_args_t *q_args, int32_t idx) { free(file_path); return -2; } - qlen = sprintf(send_buf, "file download %s\n", f_selected->name); + qlen = sprintf(send_buf, "file download [%s]\n", f_selected->name); write(q_args->sd, send_buf, qlen); q_args->state = S_FILE_DOWNLOAD; free(file_path); diff --git a/src/file_processor.h b/src/file_processor.h index 9a58a14..0244689 100644 --- a/src/file_processor.h +++ b/src/file_processor.h @@ -8,7 +8,6 @@ void file_list(file_args_t *f_args, query_args_t *q_args); void file_download(file_args_t *f_args, query_args_t *q_args); -void file_select(file_args_t *fargs, query_args_t *q_args); void init_file_args(file_args_t *fargs); int file_upload_request(char *, query_args_t *q_args); int file_upload_start(query_args_t *q_args); diff --git a/src/main.h b/src/main.h index 65c87b6..1216283 100644 --- a/src/main.h +++ b/src/main.h @@ -37,7 +37,7 @@ enum state { S_WAIT_SERVER, S_PRINT_SERVER_MESSAGE, S_FILE_LIST, - S_FILE_SELECT, + /* S_FILE_SELECT, */ S_FILE_DOWNLOAD, S_UPLOAD_PARAMS, S_UPLOAD_FILE, diff --git a/src/modals/download_pr.c b/src/modals/download_pr.c index 901e8cf..3f205ea 100644 --- a/src/modals/download_pr.c +++ b/src/modals/download_pr.c @@ -4,7 +4,9 @@ #include #include -void dwn_pr_modal_cb(callback_args_t *args) {} +void dwn_pr_modal_cb(callback_args_t *args) { + /* TODO: cancel action */ +} dialogue_t *init_dwn_pr_modal(app_t *app, bool is_upload) { if (app == NULL) diff --git a/src/query.c b/src/query.c index ecc52db..39437a1 100644 --- a/src/query.c +++ b/src/query.c @@ -169,13 +169,6 @@ int process_query(app_t *app) { case S_FILE_LIST: file_list(file_args, query_args); break; - case S_FILE_SELECT: - if (query_args->from_server) { - wait_side(app, NULL); - } else { - file_select(file_args, query_args); - } - break; case S_FILE_DOWNLOAD: file_download(file_args, query_args); break;