HexRx avatar HexRx committed 21bdff1

Save db at first login

Comments (0)

Files changed (5)

 DropboxSave 0.0.2
 -----------------------
-
+ # Fixed save db at first login
  ! Public release
  + Added compare email and password with null
  

DropboxSave/Config.cs

 {
     public static class Config
     {
+        // Ключ под которым сохраняем в конфигах
         private static string key = "DropboxSave";
+        // User data
+        private static AccountState acc;
 
         // Сохраняем значения токенов и email
         public static void SaveAccountState(IPluginHost host, string email, string token, string secret)
         {
+            // Сохраняем данные в памяти
+            acc.Email = email;
+            acc.Token = token;
+            acc.Secret = secret;
             string param = String.Format("{0};{1}", email, ToSString(token, secret));
+            // Пишем в конфиг
             host.CustomConfig.SetString(key, param);
         }
 
         // Получение данных аккаунта
         public static AccountState GetAccountState(IPluginHost host)
         {
-            AccountState acc;
+            if (acc.Token != null)
+                return acc;
             string state = host.CustomConfig.GetString(key);
             // Если есть запись, но она пустая
             if (state.Length == 0)
         // Удаление инфомации об аккаунте
         public static void RemoveAccountState(IPluginHost host)
         {
+            // Чистим в памяти
+            acc = new AccountState();
+            // Чистим в конфигах
             host.CustomConfig.SetString(key, "");
         }
 
         // Проверка существования записи в конфигах
         public static bool IsAccountState(IPluginHost host)
         {
+            if (acc.Token != null)
+                return true;
             string state = host.CustomConfig.GetString(key);
             if (state == null)
                 return false;

DropboxSave/Controls/TextBoxWatermark.cs

 
         #endregion Events
 
+        // Проверка поля на пустоту
         public bool IsEmpty()
         {
             if (_backText != this.Text)

DropboxSave/DropboxSaveExt.cs

         // Событие открытия базы
         private void MainWindow_FileOpened(object sender, KeePass.Forms.FileOpenedEventArgs e)
         {
-            // Проверяем существование информации об аккаунте в конифгах
-            if (Config.IsAccountState(m_host))
-            {
-                // Пописываемся на событие по завершению сохранения данных в файл
-                m_host.MainWindow.FileSaved += new EventHandler<KeePass.Forms.FileSavedEventArgs>(MainWindow_FileSaved);
-            }
+            // Пописываемся на событие по завершению сохранения данных в файл
+            m_host.MainWindow.FileSaved += new EventHandler<KeePass.Forms.FileSavedEventArgs>(MainWindow_FileSaved);
         }
 
         // Событие сохранения данных
         private void MainWindow_FileSaved(object sender, KeePass.Forms.FileSavedEventArgs e)
         {
+            // Информация об акке
+            AccountState acc;
+            try
+            {
+                acc = Config.GetAccountState(m_host);
+            }
+            catch (NullReferenceException)
+            {
+                // Если не произведен вход под акком, выходим из этого метода
+                return;
+            }
             // Сообщение в статуc баре
             m_host.MainWindow.SetStatusEx("Saving in Dropbox...");
             // Отображаем прогресс бар
             m_host.MainWindow.MainProgressBar.Style = ProgressBarStyle.Marquee;
             // Блокируем окно
             m_host.MainWindow.UIBlockInteraction(true);
-            // Информация об акке
-            AccountState acc = Config.GetAccountState(m_host);
             // Путь к файлу базы
             string db_file = m_host.Database.IOConnectionInfo.Path;
             DropNetClient client = new DropNetClient("hhekhlyshoqxt5s", "h0oh21e8y2seixx", acc.Token, acc.Secret);
         // Клик на пункте меню DropboxSave
         void tsMenuItem_Click(object sender, EventArgs e)
         {
-            new Forms.DropboxSave(m_host).ShowDialog();//.Show(m_host.MainWindow);
+            // Форма настроек
+            using (Forms.DropboxSave ds = new Forms.DropboxSave(m_host))
+            {
+                ds.ShowDialog();
+            }
         }
 
         // Завершение приложения

DropboxSave/Forms/DropboxSave.cs

     public partial class DropboxSave : Form
     {
         private IPluginHost m_host;
+        //private AccountState acc;
 
         public DropboxSave(IPluginHost host)
         {
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.