Monorepo for Tangled

appview/pages: minor improvements to avatar upload form

Signed-off-by: oppiliappan <me@oppi.li>

+25 -18
+1 -1
appview/oauth/handler.go
··· 167 return 168 } 169 170 - l.Debug("addings to default knot") 171 session, err := o.createAppPasswordSession(o.Config.Core.TmpAltAppPassword, consts.IcyDid) 172 if err != nil { 173 l.Error("failed to create session", "err", err)
··· 167 return 168 } 169 170 + l.Debug("adding to default knot") 171 session, err := o.createAppPasswordSession(o.Config.Core.TmpAltAppPassword, consts.IcyDid) 172 if err != nil { 173 l.Error("failed to create session", "err", err)
+6
appview/oauth/oauth.go
··· 169 170 // delete the session 171 err1 := o.ClientApp.Logout(r.Context(), sessDid, sessId) 172 173 // remove the cookie 174 userSession.Options.MaxAge = -1 175 err2 := o.SessStore.Save(r, w, userSession) 176 177 return errors.Join(err1, err2) 178 }
··· 169 170 // delete the session 171 err1 := o.ClientApp.Logout(r.Context(), sessDid, sessId) 172 + if err1 != nil { 173 + err1 = fmt.Errorf("failed to logout: %w", err1) 174 + } 175 176 // remove the cookie 177 userSession.Options.MaxAge = -1 178 err2 := o.SessStore.Save(r, w, userSession) 179 + if err2 != nil { 180 + err2 = fmt.Errorf("failed to save into session store: %w", err2) 181 + } 182 183 return errors.Join(err1, err2) 184 }
+18 -17
appview/pages/templates/user/fragments/editAvatar.html
··· 2 <form 3 hx-post="/profile/avatar" 4 hx-encoding="multipart/form-data" 5 - hx-indicator="#spinner" 6 hx-swap="none" 7 - class="flex flex-col gap-2"> 8 <label for="avatar-file" class="uppercase p-0"> 9 Upload or Remove Avatar 10 </label> ··· 22 file:bg-gray-100 file:text-gray-700 23 dark:file:bg-gray-700 dark:file:text-gray-300 24 hover:file:bg-gray-200 dark:hover:file:bg-gray-600" /> 25 - <div id="avatar-error" class="text-red-500 dark:text-red-400 text-sm min-h-5"></div> 26 <div class="flex flex-col gap-2 pt-2"> 27 <button type="submit" class="btn w-full flex items-center justify-center gap-2"> 28 - <span class="inline-flex gap-2 items-center">{{ i "upload" "size-4" }} upload</span> 29 - <span id="spinner" class="group"> 30 - {{ i "loader-circle" "ml-2 w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 31 - </span> 32 </button> 33 - <button 34 - type="button" 35 - hx-delete="/profile/avatar" 36 - hx-confirm="Are you sure you want to remove your profile picture?" 37 - hx-swap="none" 38 - class="btn w-full flex items-center justify-center gap-2"> 39 - {{ i "trash-2" "size-4" }} 40 - remove avatar 41 - </button> 42 <button 43 id="cancel-avatar-btn" 44 type="button" 45 popovertarget="avatar-upload-modal" 46 popovertargetaction="hide" 47 - class="btn w-full flex items-center justify-center gap-2 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300"> 48 {{ i "x" "size-4" }} 49 cancel 50 </button> 51 </div> 52 </form> 53 {{ end }}
··· 2 <form 3 hx-post="/profile/avatar" 4 hx-encoding="multipart/form-data" 5 hx-swap="none" 6 + class="flex flex-col gap-2 group/form"> 7 <label for="avatar-file" class="uppercase p-0"> 8 Upload or Remove Avatar 9 </label> ··· 21 file:bg-gray-100 file:text-gray-700 22 dark:file:bg-gray-700 dark:file:text-gray-300 23 hover:file:bg-gray-200 dark:hover:file:bg-gray-600" /> 24 <div class="flex flex-col gap-2 pt-2"> 25 <button type="submit" class="btn w-full flex items-center justify-center gap-2"> 26 + {{ i "upload" "size-4 inline group-[.htmx-request]/form:hidden" }} 27 + {{ i "loader-circle" "size-4 animate-spin hidden group-[.htmx-request]/form:inline" }} 28 + upload 29 </button> 30 + {{ if .Profile.Avatar }} 31 + <button 32 + type="button" 33 + hx-delete="/profile/avatar" 34 + hx-confirm="Are you sure you want to remove your profile picture?" 35 + hx-swap="none" 36 + class="btn w-full flex items-center justify-center gap-2 group"> 37 + {{ i "trash-2" "size-4 inline group-[.htmx-request]:hidden" }} 38 + {{ i "loader-circle" "size-4 animate-spin hidden group-[.htmx-request]:inline" }} 39 + remove avatar 40 + </button> 41 + {{ end }} 42 <button 43 id="cancel-avatar-btn" 44 type="button" 45 popovertarget="avatar-upload-modal" 46 popovertargetaction="hide" 47 + class="btn text-red-500 dark:text-red-400 w-full flex items-center justify-center gap-2"> 48 {{ i "x" "size-4" }} 49 cancel 50 </button> 51 </div> 52 + <div id="avatar-error" class="text-red-500 dark:text-red-400 text-sm"></div> 53 </form> 54 {{ end }}