Skip to content

Commit 9345830

Browse files
authored
Fix filepicker manual input (#146)
* fix: allows to type i while manual inputting filepath * fix: file selection in filepicker focus mode * remove duplicate code
1 parent 5307100 commit 9345830

File tree

1 file changed

+27
-30
lines changed

1 file changed

+27
-30
lines changed

internal/tui/components/dialog/filepicker.go

+27-30
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,9 @@ func (f *filepickerCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
127127
f.cursor = 0
128128
f.getCurrentFileBelowCursor()
129129
case tea.KeyMsg:
130+
if f.cwd.Focused() {
131+
f.cwd, cmd = f.cwd.Update(msg)
132+
}
130133
switch {
131134
case key.Matches(msg, filePickerKeyMap.InsertCWD):
132135
f.cwd.Focus()
@@ -165,7 +168,6 @@ func (f *filepickerCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
165168
isPathDir = f.dirs[f.cursor].IsDir()
166169
}
167170
if isPathDir {
168-
path := filepath.Join(f.cwdDetails.directory, "/", f.dirs[f.cursor].Name())
169171
newWorkingDir := DirNode{parent: f.cwdDetails, directory: path}
170172
f.cwdDetails.child = &newWorkingDir
171173
f.cwdDetails = f.cwdDetails.child
@@ -216,9 +218,6 @@ func (f *filepickerCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
216218
f.getCurrentFileBelowCursor()
217219
}
218220
}
219-
if f.cwd.Focused() {
220-
f.cwd, cmd = f.cwd.Update(msg)
221-
}
222221
return f, cmd
223222
}
224223

@@ -228,37 +227,35 @@ func (f *filepickerCmp) addAttachmentToMessage() (tea.Model, tea.Cmd) {
228227
logging.ErrorPersist(fmt.Sprintf("Model %s doesn't support attachments", modeInfo.Name))
229228
return f, nil
230229
}
231-
if isExtSupported(f.dirs[f.cursor].Name()) {
232-
f.selectedFile = f.dirs[f.cursor].Name()
233-
selectedFilePath := filepath.Join(f.cwdDetails.directory, "/", f.selectedFile)
234-
isFileLarge, err := image.ValidateFileSize(selectedFilePath, maxAttachmentSize)
235-
if err != nil {
236-
logging.ErrorPersist("unable to read the image")
237-
return f, nil
238-
}
239-
if isFileLarge {
240-
logging.ErrorPersist("file too large, max 5MB")
241-
return f, nil
242-
}
243230

244-
content, err := os.ReadFile(selectedFilePath)
245-
if err != nil {
246-
logging.ErrorPersist("Unable read selected file")
247-
return f, nil
248-
}
231+
selectedFilePath := f.selectedFile
232+
if !isExtSupported(selectedFilePath) {
233+
logging.ErrorPersist("Unsupported file")
234+
return f, nil
235+
}
249236

250-
mimeBufferSize := min(512, len(content))
251-
mimeType := http.DetectContentType(content[:mimeBufferSize])
252-
fileName := f.selectedFile
253-
attachment := message.Attachment{FilePath: selectedFilePath, FileName: fileName, MimeType: mimeType, Content: content}
254-
f.selectedFile = ""
255-
return f, util.CmdHandler(AttachmentAddedMsg{attachment})
237+
isFileLarge, err := image.ValidateFileSize(selectedFilePath, maxAttachmentSize)
238+
if err != nil {
239+
logging.ErrorPersist("unable to read the image")
240+
return f, nil
256241
}
257-
if !isExtSupported(f.selectedFile) {
258-
logging.ErrorPersist("Unsupported file")
242+
if isFileLarge {
243+
logging.ErrorPersist("file too large, max 5MB")
259244
return f, nil
260245
}
261-
return f, nil
246+
247+
content, err := os.ReadFile(selectedFilePath)
248+
if err != nil {
249+
logging.ErrorPersist("Unable read selected file")
250+
return f, nil
251+
}
252+
253+
mimeBufferSize := min(512, len(content))
254+
mimeType := http.DetectContentType(content[:mimeBufferSize])
255+
fileName := filepath.Base(selectedFilePath)
256+
attachment := message.Attachment{FilePath: selectedFilePath, FileName: fileName, MimeType: mimeType, Content: content}
257+
f.selectedFile = ""
258+
return f, util.CmdHandler(AttachmentAddedMsg{attachment})
262259
}
263260

264261
func (f *filepickerCmp) View() string {

0 commit comments

Comments
 (0)