Skip to content

Commit 0bdf95d

Browse files
committed
feat: start passport instance in ui on startup
1 parent a2b268b commit 0bdf95d

File tree

1 file changed

+58
-9
lines changed

1 file changed

+58
-9
lines changed

src/Packages/Passport/Runtime/Scripts/Public/PassportUI.cs

Lines changed: 58 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,44 @@ public int WebViewHeight
163163
private GameObject bridgeWebViewGameObject;
164164

165165
// Input management
166-
private Coroutine inputActivationCoroutine;
166+
// Note: Input coroutine removed - games should manage cursor state themselves
167+
168+
/// <summary>
169+
/// Auto-initialize PassportUI when the component starts if clientId is configured.
170+
/// This enables "drag and drop" functionality - just configure the Inspector fields and it works.
171+
/// </summary>
172+
private async void Start()
173+
{
174+
if (!isInitialized && !string.IsNullOrEmpty(clientId))
175+
{
176+
try
177+
{
178+
PassportLogger.Info($"{TAG} Auto-initializing PassportUI from Start()...");
179+
if (Passport.Instance != null)
180+
{
181+
PassportLogger.Info($"{TAG} Auto-initialization: Passport already exists, setting up UI only");
182+
await InitializeWithPassport(Passport.Instance);
183+
}
184+
else
185+
{
186+
PassportLogger.Info($"{TAG} Auto-initialization: Creating new Passport instance");
187+
await InitializeWithPassport();
188+
}
189+
}
190+
catch (Exception ex)
191+
{
192+
PassportLogger.Error($"{TAG} Auto-initialization failed: {ex.Message}");
193+
}
194+
}
195+
else if (string.IsNullOrEmpty(clientId))
196+
{
197+
PassportLogger.Warn($"{TAG} Auto-initialization skipped - Client ID not configured in Inspector");
198+
}
199+
else if (isInitialized)
200+
{
201+
PassportLogger.Info($"{TAG} Auto-initialization skipped - Already initialized");
202+
}
203+
}
167204

168205
/// <summary>
169206
/// Initialize Passport and PassportUI in one call using the configured settings.
@@ -173,6 +210,12 @@ public int WebViewHeight
173210
/// <returns>UniTask that completes when initialization is finished</returns>
174211
public async UniTask InitializeWithPassport()
175212
{
213+
if (isInitialized)
214+
{
215+
PassportLogger.Warn($"{TAG} PassportUI is already initialized, skipping InitializeWithPassport()");
216+
return;
217+
}
218+
176219
// Validate configuration
177220
if (string.IsNullOrEmpty(clientId))
178221
{
@@ -208,6 +251,12 @@ public async UniTask InitializeWithPassport()
208251
/// <returns>UniTask that completes when UI initialization is finished</returns>
209252
public async UniTask InitializeWithPassport(Passport passportInstance)
210253
{
254+
if (isInitialized)
255+
{
256+
PassportLogger.Warn($"{TAG} PassportUI is already initialized, skipping InitializeWithPassport(passport)");
257+
return;
258+
}
259+
211260
if (passportInstance == null)
212261
{
213262
PassportLogger.Error($"{TAG} Passport instance cannot be null");
@@ -241,6 +290,12 @@ public async UniTask InitializeWithPassport(Passport passportInstance)
241290
/// <param name="passportInstance">The initialized Passport instance</param>
242291
public void Init(Passport passportInstance)
243292
{
293+
if (isInitialized)
294+
{
295+
PassportLogger.Warn($"{TAG} PassportUI is already initialized, skipping Init(passport)");
296+
return;
297+
}
298+
244299
if (passportInstance == null)
245300
{
246301
PassportLogger.Error($"{TAG} Passport instance cannot be null");
@@ -279,6 +334,7 @@ public void Init(Passport passportInstance)
279334
// Hide initially
280335
HideLoginUI(logMessage: false);
281336

337+
isInitialized = true;
282338
PassportLogger.Info($"{TAG} PassportUI initialized successfully");
283339
}
284340

@@ -329,7 +385,6 @@ private void CreateWebView()
329385
webView.RegisterJavaScriptMethod("HandleLoginError", HandleLoginError);
330386
webView.RegisterJavaScriptMethod("HandleClose", (data) => HideLoginUI());
331387

332-
isInitialized = true;
333388
PassportLogger.Info($"{TAG} Cross-platform WebView created successfully");
334389
}
335390
catch (Exception ex)
@@ -678,13 +733,7 @@ private void OnDestroy()
678733
PassportLogger.Info($"{TAG} WebView disposed on destroy");
679734
}
680735

681-
// Stop any running coroutines
682-
if (inputActivationCoroutine != null)
683-
{
684-
StopCoroutine(inputActivationCoroutine);
685-
inputActivationCoroutine = null;
686-
PassportLogger.Info($"{TAG} Stopped input activation coroutine during cleanup");
687-
}
736+
// Note: Input coroutine handling removed - games should manage cursor state themselves
688737
}
689738
catch (Exception ex)
690739
{

0 commit comments

Comments
 (0)