|
|
@@ -128,6 +128,9 @@ func (f *filepickerCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
|
f.cursor = 0
|
|
|
f.getCurrentFileBelowCursor()
|
|
|
case tea.KeyMsg:
|
|
|
+ if f.cwd.Focused() {
|
|
|
+ f.cwd, cmd = f.cwd.Update(msg)
|
|
|
+ }
|
|
|
switch {
|
|
|
case key.Matches(msg, filePickerKeyMap.InsertCWD):
|
|
|
f.cwd.Focus()
|
|
|
@@ -166,7 +169,6 @@ func (f *filepickerCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
|
isPathDir = f.dirs[f.cursor].IsDir()
|
|
|
}
|
|
|
if isPathDir {
|
|
|
- path := filepath.Join(f.cwdDetails.directory, "/", f.dirs[f.cursor].Name())
|
|
|
newWorkingDir := DirNode{parent: f.cwdDetails, directory: path}
|
|
|
f.cwdDetails.child = &newWorkingDir
|
|
|
f.cwdDetails = f.cwdDetails.child
|
|
|
@@ -217,9 +219,6 @@ func (f *filepickerCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
|
f.getCurrentFileBelowCursor()
|
|
|
}
|
|
|
}
|
|
|
- if f.cwd.Focused() {
|
|
|
- f.cwd, cmd = f.cwd.Update(msg)
|
|
|
- }
|
|
|
return f, cmd
|
|
|
}
|
|
|
|
|
|
@@ -229,37 +228,35 @@ func (f *filepickerCmp) addAttachmentToMessage() (tea.Model, tea.Cmd) {
|
|
|
status.Error(fmt.Sprintf("Model %s doesn't support attachments", modeInfo.Name))
|
|
|
return f, nil
|
|
|
}
|
|
|
- if isExtSupported(f.dirs[f.cursor].Name()) {
|
|
|
- f.selectedFile = f.dirs[f.cursor].Name()
|
|
|
- selectedFilePath := filepath.Join(f.cwdDetails.directory, "/", f.selectedFile)
|
|
|
- isFileLarge, err := image.ValidateFileSize(selectedFilePath, maxAttachmentSize)
|
|
|
- if err != nil {
|
|
|
- status.Error("unable to read the image")
|
|
|
- return f, nil
|
|
|
- }
|
|
|
- if isFileLarge {
|
|
|
- status.Error("file too large, max 5MB")
|
|
|
- return f, nil
|
|
|
- }
|
|
|
|
|
|
- content, err := os.ReadFile(selectedFilePath)
|
|
|
- if err != nil {
|
|
|
- status.Error("Unable read selected file")
|
|
|
- return f, nil
|
|
|
- }
|
|
|
+ selectedFilePath := f.selectedFile
|
|
|
+ if !isExtSupported(selectedFilePath) {
|
|
|
+ status.Error("Unsupported file")
|
|
|
+ return f, nil
|
|
|
+ }
|
|
|
|
|
|
- mimeBufferSize := min(512, len(content))
|
|
|
- mimeType := http.DetectContentType(content[:mimeBufferSize])
|
|
|
- fileName := f.selectedFile
|
|
|
- attachment := message.Attachment{FilePath: selectedFilePath, FileName: fileName, MimeType: mimeType, Content: content}
|
|
|
- f.selectedFile = ""
|
|
|
- return f, util.CmdHandler(AttachmentAddedMsg{attachment})
|
|
|
+ isFileLarge, err := image.ValidateFileSize(selectedFilePath, maxAttachmentSize)
|
|
|
+ if err != nil {
|
|
|
+ status.Error("unable to read the image")
|
|
|
+ return f, nil
|
|
|
}
|
|
|
- if !isExtSupported(f.selectedFile) {
|
|
|
- status.Error("Unsupported file")
|
|
|
+ if isFileLarge {
|
|
|
+ status.Error("file too large, max 5MB")
|
|
|
return f, nil
|
|
|
}
|
|
|
- return f, nil
|
|
|
+
|
|
|
+ content, err := os.ReadFile(selectedFilePath)
|
|
|
+ if err != nil {
|
|
|
+ status.Error("Unable read selected file")
|
|
|
+ return f, nil
|
|
|
+ }
|
|
|
+
|
|
|
+ mimeBufferSize := min(512, len(content))
|
|
|
+ mimeType := http.DetectContentType(content[:mimeBufferSize])
|
|
|
+ fileName := filepath.Base(selectedFilePath)
|
|
|
+ attachment := message.Attachment{FilePath: selectedFilePath, FileName: fileName, MimeType: mimeType, Content: content}
|
|
|
+ f.selectedFile = ""
|
|
|
+ return f, util.CmdHandler(AttachmentAddedMsg{attachment})
|
|
|
}
|
|
|
|
|
|
func (f *filepickerCmp) View() string {
|