From fd67bc635ff1f75c03ab4824e066df1fc38352c8 Mon Sep 17 00:00:00 2001 From: godalming Date: Mon, 17 Mar 2025 18:51:12 +0000 Subject: [PATCH] Fix not being able to create restore token on snap because the cache directory does not exist --- inputcontrol/controller_portal.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/inputcontrol/controller_portal.go b/inputcontrol/controller_portal.go index dd07e6c..439a7c5 100644 --- a/inputcontrol/controller_portal.go +++ b/inputcontrol/controller_portal.go @@ -83,9 +83,10 @@ func InitPortalController(saveRestoreToken bool) (Controller, error) { } supportsRestoreTokens := version.Value().(uint32) >= 2 var restoreTokenFilePath string + var cacheDirectory string var restoreToken string if supportsRestoreTokens { - cacheDirectory, err := os.UserCacheDir() + cacheDirectory, err = os.UserCacheDir() if err != nil { log.Printf("Cannot get user cache directory: %s. Therefore cannot get restore token file path in order to read or save the restore token.\n", err) } else { @@ -178,9 +179,14 @@ func InitPortalController(saveRestoreToken bool) (Controller, error) { if !ok { log.Println("Failed to get new restore token") } else if restoreTokenFilePath != "" { - err := os.WriteFile(restoreTokenFilePath, []byte(restoreToken), 0600) + err := os.MkdirAll(cacheDirectory, 0700) if err != nil { - log.Printf("Failed to write restore token: %s", err) + log.Printf("Failed to create cache directory for restore token: %s\n", err) + } else { + err := os.WriteFile(restoreTokenFilePath, []byte(restoreToken), 0600) + if err != nil { + log.Printf("Failed to write restore token: %s\n", err) + } } } }