Various AT Protocol integrations with obsidian
20
fork

Configure Feed

Select the types of activity you want to include in your feed.

prevent dup redirect

+26 -3
+7 -2
.github/workflows/deploy_static.yml
··· 1 1 name: Deploy static content to Pages 2 2 3 3 on: 4 + # Runs on pushes targeting the default branch 4 5 push: 5 - tags: 6 - - "*" 6 + # branches: ["main"] 7 + branches: ["**"] 8 + # on: 9 + # push: 10 + # tags: 11 + # - "*" 7 12 8 13 # Allows you to run this workflow manually from the Actions tab 9 14 workflow_dispatch:
+19 -1
oauth-callback.html
··· 107 107 <script> 108 108 (function() { 109 109 try { 110 + // Prevent duplicate execution on mobile (when switching back to browser) 111 + const redirectKey = 'atmosphere_oauth_redirected'; 112 + if (sessionStorage.getItem(redirectKey) === 'true') { 113 + // Already redirected, show completion message 114 + document.querySelector('.spinner').style.display = 'none'; 115 + document.querySelector('h1').textContent = '✅ Redirected!'; 116 + document.getElementById('status').textContent = 'Return to Obsidian to complete login.'; 117 + document.getElementById('manual-link').classList.add('show'); 118 + return; 119 + } 120 + 110 121 // extract OAuth parameters from URL hash (not search string) 111 122 const params = new URLSearchParams(window.location.hash.slice(1)); 112 123 ··· 115 126 // store the URI for manual copy 116 127 document.getElementById('link-text').textContent = obsidianUri; 117 128 118 - window.location.href = obsidianUri; 129 + // Mark as redirected BEFORE the redirect to prevent race conditions 130 + sessionStorage.setItem(redirectKey, 'true'); 131 + 132 + // Small delay to ensure any pending IndexedDB writes complete 133 + // This is important on mobile where the browser may suspend the tab 134 + setTimeout(function() { 135 + window.location.href = obsidianUri; 136 + }, 100); 119 137 120 138 setTimeout(function() { 121 139 const spinner = document.querySelector('.spinner');