Browse Source

Sujith :) ->
1. Mini refactoring for arbitrator

sujith 1 month ago
parent
commit
b50b564680

+ 25 - 38
Assets/Arbitrator/Editor/GUI/ArbitratorController.cs

@@ -10,27 +10,18 @@ using Terra.Arbitrator.Settings;
 using Terra.Arbitrator.Services;
 using Terra.Arbitrator.Promises;
 using System.Collections.Generic;
-using UnityEngine;
 
 namespace Terra.Arbitrator.GUI
 {
     public class ArbitratorController
     {
-        // --- Private State ---
         private List<GitChange> _changes = new();
-        private string _infoMessage;
-        private string _errorMessage;
-        private bool _isLoading;
-        private string _loadingMessage = "";
-        
-        // --- Public Properties for the View ---
         public IReadOnlyList<GitChange> Changes => _changes;
-        public string InfoMessage => _infoMessage;
-        public string ErrorMessage => _errorMessage;
-        public bool IsLoading => _isLoading;
-        public string LoadingMessage => _loadingMessage;
+        public string InfoMessage { get; private set; }
+        public string ErrorMessage { get; private set; }
+        public bool IsLoading { get; private set; }
+        public string LoadingMessage { get; private set; } = "";
 
-        // --- Communication with the View ---
         private readonly Action _requestRepaint;
         private readonly Func<string, string, bool> _displayDialog;
 
@@ -44,16 +35,13 @@ namespace Terra.Arbitrator.GUI
             _requestRepaint = requestRepaint;
             _displayDialog = displayDialog;
         }
-
-        // --- Public Methods (called by the View) ---
-
+        
         public void OnEnable()
         {
-            // This logic is moved from ArbitratorWindow.OnEnable
             if (SessionState.GetBool(BetterGitStatePersistence.ResetQueueKey, false))
             {
                 SessionState.EraseString(BetterGitStatePersistence.ResetQueueKey);
-                _infoMessage = "Multi-file reset complete. Pulling again to confirm...";
+                InfoMessage = "Multi-file reset complete. Pulling again to confirm...";
                 Pull();
             }
             else
@@ -75,7 +63,7 @@ namespace Terra.Arbitrator.GUI
         
         public void Pull()
         {
-            if (_isLoading) return;
+            if (IsLoading) return;
             StartOperation("Analyzing for conflicts...");
 
             GitService.AnalyzePullConflicts()
@@ -83,8 +71,7 @@ namespace Terra.Arbitrator.GUI
                 {
                     if (analysisResult.HasConflicts)
                     {
-                        // This part is synchronous UI, so it stays.
-                        FinishOperation(); // Stop loading while modal is open
+                        FinishOperation();
                         ConflictResolutionWindow.ShowWindow(analysisResult.ConflictingFiles, filesToActOn =>
                         {
                             if (filesToActOn == null) return; 
@@ -98,7 +85,7 @@ namespace Terra.Arbitrator.GUI
                         GitService.PerformSafePull()
                             .Then(successMessage =>
                             {
-                                _infoMessage = successMessage;
+                                InfoMessage = successMessage;
                                 // Refresh will handle its own start/finish states
                                 Refresh();
                             })
@@ -126,7 +113,7 @@ namespace Terra.Arbitrator.GUI
 
             GitService.CommitAndPush(selectedFiles, commitMessage, username, email)
                 .Then(successMessage => {
-                    _infoMessage = successMessage;
+                    InfoMessage = successMessage;
                     Refresh();
                 })
                 .Catch(ex => {
@@ -137,7 +124,7 @@ namespace Terra.Arbitrator.GUI
 
         public void ResetFile(GitChange change)
         {
-            if (_isLoading) return;
+            if (IsLoading) return;
             var userConfirmed = _displayDialog("Confirm Reset", $"Are you sure you want to revert all local changes to '{change.FilePath}'? This action cannot be undone.");
             if (!userConfirmed) return;
             
@@ -145,7 +132,7 @@ namespace Terra.Arbitrator.GUI
             
             GitService.ResetFileChanges(change)
                 .Then(successMessage => {
-                    _infoMessage = successMessage;
+                    InfoMessage = successMessage;
                     Refresh();
                 })
                 .Catch(ex => {
@@ -156,7 +143,7 @@ namespace Terra.Arbitrator.GUI
         
         public void DiffFile(GitChange change)
         {
-            if (_isLoading) return;
+            if (IsLoading) return;
             StartOperation($"Launching diff for {change.FilePath}...");
             
             GitService.LaunchExternalDiff(change)
@@ -166,11 +153,11 @@ namespace Terra.Arbitrator.GUI
         
         public void ResolveConflict(GitChange change)
         {
-            if (_isLoading) return;
+            if (IsLoading) return;
             StartOperation($"Opening merge tool for {change.FilePath}...");
             
             GitService.LaunchMergeTool(change)
-                .Then(successMessage => { _infoMessage = successMessage; })
+                .Then(successMessage => { InfoMessage = successMessage; })
                 .Catch(HandleOperationError)
                 .Finally(Refresh);
         }
@@ -188,7 +175,7 @@ namespace Terra.Arbitrator.GUI
             GitService.ResetAllChanges()
                 .Then(successMessage =>
                 {
-                    _infoMessage = successMessage;
+                    InfoMessage = successMessage;
                 })
                 .Catch(HandleOperationError)
                 .Finally(Refresh);
@@ -217,7 +204,7 @@ namespace Terra.Arbitrator.GUI
         {
             if (wasUnstaged)
             {
-                _infoMessage = "Found and unstaged files for review.";
+                InfoMessage = "Found and unstaged files for review.";
             }
             return GitService.CompareLocalToRemote();
         }
@@ -226,8 +213,8 @@ namespace Terra.Arbitrator.GUI
 
         private void StartOperation(string loadingMessage)
         {
-            _isLoading = true;
-            _loadingMessage = loadingMessage;
+            IsLoading = true;
+            LoadingMessage = loadingMessage;
             ClearMessages();
             _changes = null;
             _requestRepaint?.Invoke();
@@ -235,24 +222,24 @@ namespace Terra.Arbitrator.GUI
 
         private void HandleOperationError(Exception ex)
         {
-            _errorMessage = $"Operation Failed: {ex.Message}";
+            ErrorMessage = $"Operation Failed: {ex.Message}";
         }
         
         private void FinishOperation()
         {
-            _isLoading = false;
+            IsLoading = false;
             _requestRepaint?.Invoke();
         }
         
         private void ClearMessages()
         {
-            _errorMessage = null;
-            _infoMessage = null;
+            ErrorMessage = null;
+            InfoMessage = null;
         }
 
         private void ResetMultipleFiles(List<string> filePaths)
         {
-            _infoMessage = $"Starting reset for {filePaths.Count} file(s)... This may trigger script compilation.";
+            InfoMessage = $"Starting reset for {filePaths.Count} file(s)... This may trigger script compilation.";
             _requestRepaint?.Invoke();
             SessionState.SetString("BetterGit.ResetQueue", string.Join(";", filePaths));
             EditorApplication.delayCall += BetterGitStatePersistence.ContinueInterruptedReset;
@@ -266,7 +253,7 @@ namespace Terra.Arbitrator.GUI
             GitService.ForcePull()
                 .Then(_ =>
                 {
-                    _infoMessage = "Pull resulted in conflicts. Please resolve them below.";
+                    InfoMessage = "Pull resulted in conflicts. Please resolve them below.";
                 })
                 .Catch(HandleOperationError)
                 .Finally(() =>

+ 1 - 3
Assets/Arbitrator/Editor/GUI/ArbitratorWindow.cs

@@ -27,7 +27,6 @@ namespace Terra.Arbitrator.GUI
         
         private void OnEnable()
         {
-            // The window creates the controller and passes delegates for communication.
             _controller = new ArbitratorController(
                 requestRepaint: Repaint,
                 displayDialog: (heading, message) => EditorUtility.DisplayDialog(heading, message, "Yes", "No")
@@ -251,9 +250,8 @@ namespace Terra.Arbitrator.GUI
             EditorGUI.BeginDisabledGroup(isPushDisabled);
             if (GUILayout.Button("Commit & Push Selected Files", GUILayout.Height(40)))
             {
-                // Pass the UI state to the controller.
                 _controller.CommitAndPush(_commitMessage);
-                _commitMessage = ""; // Clear on sending
+                _commitMessage = "";
             }
             EditorGUI.EndDisabledGroup();