Skip to content

Commit 025753d

Browse files
committed
fix: remove redundant function containsKey
1 parent d69cc95 commit 025753d

File tree

2 files changed

+82
-90
lines changed

2 files changed

+82
-90
lines changed

src/internal/key_function.go

Lines changed: 80 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,13 @@ import (
1010
variable "github.com/yorukot/superfile/src/config"
1111
)
1212

13-
// Todo : Replace usage of this with direct slices.Contains call
14-
// This function is not required
15-
func containsKey(v string, a []string) string {
16-
if slices.Contains(a, v) {
17-
return v
18-
}
19-
return ""
20-
}
21-
2213
// mainKey handles most of key commands in the regular state of the application. For
2314
// keys that performs actions in multiple panels, like going up or down,
2415
// check the state of model m and handle properly.
2516
func (m *model) mainKey(msg string, cmd tea.Cmd) tea.Cmd {
26-
switch msg {
17+
switch {
2718
// If move up Key is pressed, check the current state and executes
28-
case containsKey(msg, common.Hotkeys.ListUp):
19+
case slices.Contains(common.Hotkeys.ListUp, msg):
2920
switch m.focusPanel {
3021
case sidebarFocus:
3122
m.sidebarModel.listUp(m.mainPanelHeight)
@@ -42,7 +33,7 @@ func (m *model) mainKey(msg string, cmd tea.Cmd) tea.Cmd {
4233
}
4334

4435
// If move down Key is pressed, check the current state and executes
45-
case containsKey(msg, common.Hotkeys.ListDown):
36+
case slices.Contains(common.Hotkeys.ListDown, msg):
4637
switch m.focusPanel {
4738
case sidebarFocus:
4839
m.sidebarModel.listDown(m.mainPanelHeight)
@@ -58,88 +49,88 @@ func (m *model) mainKey(msg string, cmd tea.Cmd) tea.Cmd {
5849
}()
5950
}
6051

61-
case containsKey(msg, common.Hotkeys.PageUp):
52+
case slices.Contains(common.Hotkeys.PageUp, msg):
6253
m.fileModel.filePanels[m.filePanelFocusIndex].pgUp(m.mainPanelHeight)
6354

64-
case containsKey(msg, common.Hotkeys.PageDown):
55+
case slices.Contains(common.Hotkeys.PageDown, msg):
6556
m.fileModel.filePanels[m.filePanelFocusIndex].pgDown(m.mainPanelHeight)
6657

67-
case containsKey(msg, common.Hotkeys.ChangePanelMode):
58+
case slices.Contains(common.Hotkeys.ChangePanelMode, msg):
6859
m.changeFilePanelMode()
6960

70-
case containsKey(msg, common.Hotkeys.NextFilePanel):
61+
case slices.Contains(common.Hotkeys.NextFilePanel, msg):
7162
m.nextFilePanel()
7263

73-
case containsKey(msg, common.Hotkeys.PreviousFilePanel):
64+
case slices.Contains(common.Hotkeys.PreviousFilePanel, msg):
7465
m.previousFilePanel()
7566

76-
case containsKey(msg, common.Hotkeys.CloseFilePanel):
67+
case slices.Contains(common.Hotkeys.CloseFilePanel, msg):
7768
m.closeFilePanel()
7869

79-
case containsKey(msg, common.Hotkeys.CreateNewFilePanel):
70+
case slices.Contains(common.Hotkeys.CreateNewFilePanel, msg):
8071
err := m.createNewFilePanel(variable.HomeDir)
8172
if err != nil {
8273
slog.Error("error while creating new panel", "error", err)
8374
}
84-
case containsKey(msg, common.Hotkeys.ToggleFilePreviewPanel):
75+
case slices.Contains(common.Hotkeys.ToggleFilePreviewPanel, msg):
8576
m.toggleFilePreviewPanel()
8677

87-
case containsKey(msg, common.Hotkeys.FocusOnSidebar):
78+
case slices.Contains(common.Hotkeys.FocusOnSidebar, msg):
8879
m.focusOnSideBar()
8980

90-
case containsKey(msg, common.Hotkeys.FocusOnProcessBar):
81+
case slices.Contains(common.Hotkeys.FocusOnProcessBar, msg):
9182
m.focusOnProcessBar()
9283

93-
case containsKey(msg, common.Hotkeys.FocusOnMetaData):
84+
case slices.Contains(common.Hotkeys.FocusOnMetaData, msg):
9485
m.focusOnMetadata()
9586
go func() {
9687
m.returnMetaData()
9788
}()
9889

99-
case containsKey(msg, common.Hotkeys.PasteItems):
90+
case slices.Contains(common.Hotkeys.PasteItems, msg):
10091
go func() {
10192
m.pasteItem()
10293
}()
10394

104-
case containsKey(msg, common.Hotkeys.FilePanelItemCreate):
95+
case slices.Contains(common.Hotkeys.FilePanelItemCreate, msg):
10596
m.panelCreateNewFile()
106-
case containsKey(msg, common.Hotkeys.PinnedDirectory):
97+
case slices.Contains(common.Hotkeys.PinnedDirectory, msg):
10798
m.pinnedDirectory()
10899

109-
case containsKey(msg, common.Hotkeys.ToggleDotFile):
100+
case slices.Contains(common.Hotkeys.ToggleDotFile, msg):
110101
m.toggleDotFileController()
111102

112-
case containsKey(msg, common.Hotkeys.ToggleFooter):
103+
case slices.Contains(common.Hotkeys.ToggleFooter, msg):
113104
m.toggleFooterController()
114105

115-
case containsKey(msg, common.Hotkeys.ExtractFile):
106+
case slices.Contains(common.Hotkeys.ExtractFile, msg):
116107
go func() {
117108
m.extractFile()
118109
}()
119110

120-
case containsKey(msg, common.Hotkeys.CompressFile):
111+
case slices.Contains(common.Hotkeys.CompressFile, msg):
121112
go func() {
122113
m.compressFile()
123114
}()
124115

125-
case containsKey(msg, common.Hotkeys.OpenCommandLine):
116+
case slices.Contains(common.Hotkeys.OpenCommandLine, msg):
126117
m.promptModal.Open(true)
127-
case containsKey(msg, common.Hotkeys.OpenSPFPrompt):
118+
case slices.Contains(common.Hotkeys.OpenSPFPrompt, msg):
128119
m.promptModal.Open(false)
129120

130-
case containsKey(msg, common.Hotkeys.OpenHelpMenu):
121+
case slices.Contains(common.Hotkeys.OpenHelpMenu, msg):
131122
m.openHelpMenu()
132123

133-
case containsKey(msg, common.Hotkeys.OpenSortOptionsMenu):
124+
case slices.Contains(common.Hotkeys.OpenSortOptionsMenu, msg):
134125
m.openSortOptionsMenu()
135126

136-
case containsKey(msg, common.Hotkeys.ToggleReverseSort):
127+
case slices.Contains(common.Hotkeys.ToggleReverseSort, msg):
137128
m.toggleReverseSort()
138129

139-
case containsKey(msg, common.Hotkeys.OpenFileWithEditor):
130+
case slices.Contains(common.Hotkeys.OpenFileWithEditor, msg):
140131
cmd = m.openFileWithEditor()
141132

142-
case containsKey(msg, common.Hotkeys.OpenCurrentDirectoryWithEditor):
133+
case slices.Contains(common.Hotkeys.OpenCurrentDirectoryWithEditor, msg):
143134
cmd = m.openDirectoryWithEditor()
144135

145136
default:
@@ -152,84 +143,84 @@ func (m *model) mainKey(msg string, cmd tea.Cmd) tea.Cmd {
152143
func (m *model) normalAndBrowserModeKey(msg string) {
153144
// if not focus on the filepanel return
154145
if m.fileModel.filePanels[m.filePanelFocusIndex].focusType != focus {
155-
if m.focusPanel == sidebarFocus && (msg == containsKey(msg, common.Hotkeys.Confirm)) {
146+
if m.focusPanel == sidebarFocus && slices.Contains(common.Hotkeys.Confirm, msg) {
156147
m.sidebarSelectDirectory()
157148
}
158-
if m.focusPanel == sidebarFocus && (msg == containsKey(msg, common.Hotkeys.FilePanelItemRename)) {
149+
if m.focusPanel == sidebarFocus && slices.Contains(common.Hotkeys.FilePanelItemRename, msg) {
159150
m.pinnedItemRename()
160151
}
161-
if m.focusPanel == sidebarFocus && (msg == containsKey(msg, common.Hotkeys.SearchBar)) {
152+
if m.focusPanel == sidebarFocus && slices.Contains(common.Hotkeys.SearchBar, msg) {
162153
m.sidebarSearchBarFocus()
163154
}
164155
return
165156
}
166157
// Check if in the select mode and focusOn filepanel
167158
if m.fileModel.filePanels[m.filePanelFocusIndex].panelMode == selectMode {
168-
switch msg {
169-
case containsKey(msg, common.Hotkeys.Confirm):
159+
switch {
160+
case slices.Contains(common.Hotkeys.Confirm, msg):
170161
m.fileModel.filePanels[m.filePanelFocusIndex].singleItemSelect()
171-
case containsKey(msg, common.Hotkeys.FilePanelSelectModeItemsSelectUp):
162+
case slices.Contains(common.Hotkeys.FilePanelSelectModeItemsSelectUp, msg):
172163
m.fileModel.filePanels[m.filePanelFocusIndex].itemSelectUp(m.mainPanelHeight)
173-
case containsKey(msg, common.Hotkeys.FilePanelSelectModeItemsSelectDown):
164+
case slices.Contains(common.Hotkeys.FilePanelSelectModeItemsSelectDown, msg):
174165
m.fileModel.filePanels[m.filePanelFocusIndex].itemSelectDown(m.mainPanelHeight)
175-
case containsKey(msg, common.Hotkeys.DeleteItems):
166+
case slices.Contains(common.Hotkeys.DeleteItems, msg):
176167
go func() {
177168
m.deleteItemWarn()
178169
}()
179-
case containsKey(msg, common.Hotkeys.CopyItems):
170+
case slices.Contains(common.Hotkeys.CopyItems, msg):
180171
m.copyMultipleItem(false)
181-
case containsKey(msg, common.Hotkeys.CutItems):
172+
case slices.Contains(common.Hotkeys.CutItems, msg):
182173
m.copyMultipleItem(true)
183-
case containsKey(msg, common.Hotkeys.FilePanelSelectAllItem):
174+
case slices.Contains(common.Hotkeys.FilePanelSelectAllItem, msg):
184175
m.selectAllItem()
185176
}
186177
return
187178
}
188179

189-
switch msg {
190-
case containsKey(msg, common.Hotkeys.Confirm):
180+
switch {
181+
case slices.Contains(common.Hotkeys.Confirm, msg):
191182
m.enterPanel()
192-
case containsKey(msg, common.Hotkeys.ParentDirectory):
183+
case slices.Contains(common.Hotkeys.ParentDirectory, msg):
193184
m.parentDirectory()
194-
case containsKey(msg, common.Hotkeys.DeleteItems):
185+
case slices.Contains(common.Hotkeys.DeleteItems, msg):
195186
go func() {
196187
m.deleteItemWarn()
197188
}()
198-
case containsKey(msg, common.Hotkeys.CopyItems):
189+
case slices.Contains(common.Hotkeys.CopyItems, msg):
199190
m.copySingleItem(false)
200-
case containsKey(msg, common.Hotkeys.CutItems):
191+
case slices.Contains(common.Hotkeys.CutItems, msg):
201192
m.copySingleItem(true)
202-
case containsKey(msg, common.Hotkeys.FilePanelItemRename):
193+
case slices.Contains(common.Hotkeys.FilePanelItemRename, msg):
203194
m.panelItemRename()
204-
case containsKey(msg, common.Hotkeys.SearchBar):
195+
case slices.Contains(common.Hotkeys.SearchBar, msg):
205196
m.searchBarFocus()
206-
case containsKey(msg, common.Hotkeys.CopyPath):
197+
case slices.Contains(common.Hotkeys.CopyPath, msg):
207198
m.copyPath()
208-
case containsKey(msg, common.Hotkeys.CopyPWD):
199+
case slices.Contains(common.Hotkeys.CopyPWD, msg):
209200
m.copyPWD()
210201
}
211202
}
212203

213204
// Check the hotkey to cancel operation or create file
214205
func (m *model) typingModalOpenKey(msg string) {
215-
switch msg {
216-
case containsKey(msg, common.Hotkeys.CancelTyping):
206+
switch {
207+
case slices.Contains(common.Hotkeys.CancelTyping, msg):
217208
m.cancelTypingModal()
218-
case containsKey(msg, common.Hotkeys.ConfirmTyping):
209+
case slices.Contains(common.Hotkeys.ConfirmTyping, msg):
219210
m.createItem()
220211
}
221212
}
222213

223214
// Todo : There is a lot of duplication for these models, each one of them has to handle
224215
// ConfirmTyping and CancleTyping in a similar way. There is a scope of some good refactoring here.
225216
func (m *model) warnModalOpenKey(msg string) {
226-
switch msg {
227-
case containsKey(msg, common.Hotkeys.Quit), containsKey(msg, common.Hotkeys.CancelTyping):
217+
switch {
218+
case slices.Contains(common.Hotkeys.CancelTyping, msg) || slices.Contains(common.Hotkeys.Quit, msg):
228219
m.cancelWarnModal()
229220
if m.warnModal.warnType == confirmRenameItem {
230221
m.cancelRename()
231222
}
232-
case containsKey(msg, common.Hotkeys.Confirm):
223+
case slices.Contains(common.Hotkeys.Confirm, msg):
233224
m.warnModal.open = false
234225
switch m.warnModal.warnType {
235226
case confirmDeleteItem:
@@ -265,12 +256,12 @@ func (m *model) warnModalOpenKey(msg string) {
265256

266257
// Handle key input to confirm or cancel and close quiting warn in SPF
267258
func (m *model) confirmToQuitSuperfile(msg string) bool {
268-
switch msg {
269-
case containsKey(msg, common.Hotkeys.Quit), containsKey(msg, common.Hotkeys.CancelTyping):
259+
switch {
260+
case slices.Contains(common.Hotkeys.CancelTyping, msg) || slices.Contains(common.Hotkeys.Quit, msg):
270261
m.cancelWarnModal()
271262
m.confirmToQuit = false
272263
return false
273-
case containsKey(msg, common.Hotkeys.Confirm):
264+
case slices.Contains(common.Hotkeys.Confirm, msg):
274265
return true
275266
default:
276267
return false
@@ -279,25 +270,25 @@ func (m *model) confirmToQuitSuperfile(msg string) bool {
279270

280271
// Handles key inputs inside sort options menu
281272
func (m *model) sortOptionsKey(msg string) {
282-
switch msg {
283-
case containsKey(msg, common.Hotkeys.OpenSortOptionsMenu):
273+
switch {
274+
case slices.Contains(common.Hotkeys.OpenSortOptionsMenu, msg):
284275
m.cancelSortOptions()
285-
case containsKey(msg, common.Hotkeys.Quit):
276+
case slices.Contains(common.Hotkeys.Quit, msg):
286277
m.cancelSortOptions()
287-
case containsKey(msg, common.Hotkeys.Confirm):
278+
case slices.Contains(common.Hotkeys.Confirm, msg):
288279
m.confirmSortOptions()
289-
case containsKey(msg, common.Hotkeys.ListUp):
280+
case slices.Contains(common.Hotkeys.ListUp, msg):
290281
m.sortOptionsListUp()
291-
case containsKey(msg, common.Hotkeys.ListDown):
282+
case slices.Contains(common.Hotkeys.ListDown, msg):
292283
m.sortOptionsListDown()
293284
}
294285
}
295286

296287
func (m *model) renamingKey(msg string) {
297-
switch msg {
298-
case containsKey(msg, common.Hotkeys.CancelTyping):
288+
switch {
289+
case slices.Contains(common.Hotkeys.CancelTyping, msg):
299290
m.cancelRename()
300-
case containsKey(msg, common.Hotkeys.ConfirmTyping):
291+
case slices.Contains(common.Hotkeys.ConfirmTyping, msg):
301292
if m.IsRenamingConflicting() {
302293
m.warnModalForRenaming()
303294
} else {
@@ -307,44 +298,44 @@ func (m *model) renamingKey(msg string) {
307298
}
308299

309300
func (m *model) sidebarRenamingKey(msg string) {
310-
switch msg {
311-
case containsKey(msg, common.Hotkeys.CancelTyping):
301+
switch {
302+
case slices.Contains(common.Hotkeys.CancelTyping, msg):
312303
m.cancelSidebarRename()
313-
case containsKey(msg, common.Hotkeys.ConfirmTyping):
304+
case slices.Contains(common.Hotkeys.ConfirmTyping, msg):
314305
m.confirmSidebarRename()
315306
}
316307
}
317308

318309
func (m *model) sidebarSearchBarKey(msg string) {
319-
switch msg {
320-
case containsKey(msg, common.Hotkeys.CancelTyping):
310+
switch {
311+
case slices.Contains(common.Hotkeys.CancelTyping, msg):
321312
m.sidebarModel.searchBar.Blur()
322313
m.sidebarModel.searchBar.SetValue("")
323-
case containsKey(msg, common.Hotkeys.ConfirmTyping):
314+
case slices.Contains(common.Hotkeys.ConfirmTyping, msg):
324315
m.sidebarModel.searchBar.Blur()
325316
m.sidebarModel.resetCursor()
326317
}
327318
}
328319

329320
// Check the key input and cancel or confirms the search
330321
func (m *model) focusOnSearchbarKey(msg string) {
331-
switch msg {
332-
case containsKey(msg, common.Hotkeys.CancelTyping):
322+
switch {
323+
case slices.Contains(common.Hotkeys.CancelTyping, msg):
333324
m.cancelSearch()
334-
case containsKey(msg, common.Hotkeys.ConfirmTyping):
325+
case slices.Contains(common.Hotkeys.ConfirmTyping, msg):
335326
m.confirmSearch()
336327
}
337328
}
338329

339330
// Check hotkey input in help menu. Possible actions are moving up, down
340331
// and quiting the menu
341332
func (m *model) helpMenuKey(msg string) {
342-
switch msg {
343-
case containsKey(msg, common.Hotkeys.ListUp):
333+
switch {
334+
case slices.Contains(common.Hotkeys.ListUp, msg):
344335
m.helpMenuListUp()
345-
case containsKey(msg, common.Hotkeys.ListDown):
336+
case slices.Contains(common.Hotkeys.ListDown, msg):
346337
m.helpMenuListDown()
347-
case containsKey(msg, common.Hotkeys.Quit):
338+
case slices.Contains(common.Hotkeys.Quit, msg):
348339
m.quitHelpMenu()
349340
}
350341
}

src/internal/model.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"os/exec"
99
"path/filepath"
1010
"reflect"
11+
"slices"
1112
"strings"
1213
"time"
1314

@@ -262,7 +263,7 @@ func (m *model) handleKeyInput(msg tea.KeyMsg, cmd tea.Cmd) tea.Cmd {
262263
}
263264
// If quiting input pressed, check if has any running process and displays a
264265
// warn. Otherwise just quits application
265-
case msg.String() == containsKey(msg.String(), common.Hotkeys.Quit):
266+
case slices.Contains(common.Hotkeys.Quit, msg.String()):
266267
if m.hasRunningProcesses() {
267268
m.warnModalForQuit()
268269
return cmd

0 commit comments

Comments
 (0)