@@ -41,12 +41,14 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
4141 case tea .KeyEnter :
4242 registries := viper .GetStringSlice ("registries" )
4343 newRegistry := m .newRegistryInput .Value ()
44- result := manifest .GetManifest (newRegistry )()
45- if _ , ok := result .(manifest.ManifestErrorMessage ); ok {
46- return m , func () tea.Msg {
47- return result
48- }
44+ if m .checkIfDuplicateRegistry (newRegistry ) {
45+ return m , duplicateRegistryErrorMessage
4946 }
47+
48+ if valid , cmd := m .checkIfValidRegistry (newRegistry ); ! valid {
49+ return m , cmd
50+ }
51+
5052 registries = append (registries , newRegistry )
5153 viper .Set ("registries" , registries )
5254 viper .WriteConfig ()
@@ -68,3 +70,23 @@ func (m Model) View() string {
6870 Padding (0 , 1 ).
6971 Render (m .newRegistryInput .View ())
7072}
73+
74+ func (m Model ) checkIfDuplicateRegistry (newRegistry string ) bool {
75+ registries := viper .GetStringSlice ("registries" )
76+ for _ , registry := range registries {
77+ if registry == newRegistry {
78+ return true
79+ }
80+ }
81+ return false
82+ }
83+
84+ func (m Model ) checkIfValidRegistry (newRegistry string ) (bool , tea.Cmd ) {
85+ result := manifest .GetManifest (newRegistry )()
86+ if _ , ok := result .(manifest.ManifestErrorMessage ); ok {
87+ return false , func () tea.Msg {
88+ return result
89+ }
90+ }
91+ return true , nil
92+ }
0 commit comments