{"id":2911,"date":"2025-12-27T08:08:30","date_gmt":"2025-12-27T08:08:30","guid":{"rendered":"https:\/\/www.cconnectgh.org\/?page_id=2911"},"modified":"2025-12-27T19:03:25","modified_gmt":"2025-12-27T19:03:25","slug":"elementor-page-2911","status":"publish","type":"page","link":"https:\/\/www.cconnectgh.org\/?page_id=2911","title":{"rendered":"MyAccounts"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2911\" class=\"elementor elementor-2911\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5273912 e-grid e-con-boxed e-con e-parent\" data-id=\"5273912\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-daa1428 elementor-widget elementor-widget-google_maps\" data-id=\"daa1428\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"google_maps.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-custom-embed\">\n\t\t\t<iframe loading=\"lazy\"\n\t\t\t\t\tsrc=\"https:\/\/maps.google.com\/maps?q=kwamekyemkrom&#038;t=m&#038;z=10&#038;output=embed&#038;iwloc=near\"\n\t\t\t\t\ttitle=\"kwamekyemkrom\"\n\t\t\t\t\taria-label=\"kwamekyemkrom\"\n\t\t\t><\/iframe>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2c8b637 e-grid e-con-boxed e-con e-parent\" data-id=\"2c8b637\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-88bf0c3 elementor-widget elementor-widget-shortcode\" data-id=\"88bf0c3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">        <style>\r\n            .cc-wrap{\r\n                max-width: 760px;\r\n                margin: 18px auto;\r\n                padding: 0 16px 26px;\r\n                color: #fff;\r\n                font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;\r\n            }\r\n            .cc-surface{\r\n                background: #0b0b0b;\r\n                border-radius: 18px;\r\n                border: 1px solid #1f1f1f;\r\n                overflow: hidden;\r\n                box-shadow: 0 14px 36px rgba(0,0,0,.40);\r\n            }\r\n            .cc-topbar{\r\n                display:flex;\r\n                align-items:center;\r\n                justify-content:space-between;\r\n                padding: 14px 16px;\r\n                background: #0e0e0e;\r\n                border-bottom: 1px solid #1b1b1b;\r\n            }\r\n            .cc-brand{display:flex;align-items:center;gap:12px;min-width:0;}\r\n            .cc-logo{\r\n                width: 34px;height: 34px;border-radius: 10px;\r\n                background:#111;border:1px solid #232323;\r\n                display:flex;align-items:center;justify-content:center;flex:0 0 auto;\r\n            }\r\n            .cc-appname{font-weight:950;letter-spacing:.2px;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}\r\n            .cc-actions{display:flex;align-items:center;gap:10px;}\r\n            .cc-iconbtn{\r\n                width: 40px;height: 40px;border-radius: 12px;\r\n                border: 1px solid #2a2a2a;background: #121212;\r\n                display:flex;align-items:center;justify-content:center;cursor:pointer;\r\n            }\r\n            .cc-iconbtn:hover{ background:#171717; }\r\n\r\n            .cc-section{\r\n                padding: 16px 16px 10px;\r\n                display:flex;\r\n                align-items:flex-end;\r\n                justify-content:space-between;\r\n                gap: 10px;\r\n                flex-wrap: wrap;\r\n            }\r\n            .cc-section h3{\r\n                margin:0;\r\n                font-size: 26px;\r\n                font-weight: 950;\r\n                color: #22c55e;\r\n                letter-spacing: .2px;\r\n            }\r\n            .cc-links{\r\n                font-size: 13px;\r\n                color: rgba(255,255,255,.72);\r\n                display:flex;\r\n                gap:10px;\r\n                flex-wrap:wrap;\r\n                justify-content:flex-end;\r\n            }\r\n            .cc-links a{\r\n                color:#93c5fd;\r\n                text-decoration:none;\r\n                font-weight: 850;\r\n            }\r\n            .cc-links a:hover{text-decoration:underline;}\r\n\r\n            .cc-body{ padding: 0 16px 18px; }\r\n\r\n            .cc-msg{\r\n                margin: 0 0 14px;\r\n                padding: 12px 14px;\r\n                border-radius: 14px;\r\n                font-size: 14px;\r\n                border: 1px solid transparent;\r\n            }\r\n            .cc-msg-success{ background: rgba(34,197,94,.12); border-color: rgba(34,197,94,.25); color:#d1fae5; }\r\n            .cc-msg-error{ background: rgba(220,38,38,.12); border-color: rgba(220,38,38,.25); color:#fecaca; }\r\n\r\n            .cc-card{\r\n                padding: 16px 16px;\r\n                border-radius: 18px;\r\n                background: #0f0f0f;\r\n                border: 1px solid #262626;\r\n                margin-bottom: 14px;\r\n            }\r\n            .cc-profile-head{\r\n                display:flex;\r\n                align-items:center;\r\n                justify-content:space-between;\r\n                gap: 12px;\r\n                flex-wrap: wrap;\r\n            }\r\n            .cc-name{ font-weight: 950; font-size: 20px; margin: 0; }\r\n            .cc-chip{\r\n                display:inline-flex;\r\n                align-items:center;\r\n                gap: 8px;\r\n                padding: 7px 10px;\r\n                border-radius: 999px;\r\n                background:#121212;\r\n                border:1px solid #2a2a2a;\r\n                font-size: 12px;\r\n                color: rgba(255,255,255,.8);\r\n                font-weight: 900;\r\n            }\r\n            .cc-kv{\r\n                margin-top: 12px;\r\n                display:grid;\r\n                grid-template-columns: 1fr;\r\n                gap: 8px;\r\n                font-size: 14px;\r\n                color: rgba(255,255,255,.82);\r\n            }\r\n            .cc-kv b{ color: rgba(255,255,255,.95); font-weight: 850; }\r\n\r\n            .cc-grid{\r\n                display:grid;\r\n                grid-template-columns: 1fr;\r\n                gap: 12px;\r\n            }\r\n            @media (min-width: 620px){\r\n                .cc-grid{ grid-template-columns: 1fr 1fr; }\r\n            }\r\n\r\n            .cc-btn{\r\n                width:100%;\r\n                padding: 14px 16px;\r\n                border-radius: 18px;\r\n                border: none;\r\n                background: #2563eb;\r\n                color: #fff;\r\n                font-weight: 950;\r\n                font-size: 15px;\r\n                cursor:pointer;\r\n                text-decoration:none;\r\n                display:inline-flex;\r\n                align-items:center;\r\n                justify-content:center;\r\n            }\r\n            .cc-btn:hover{ background:#1d4ed8; }\r\n            .cc-btn-ghost{\r\n                background: transparent;\r\n                border: 1px solid #2a2a2a;\r\n            }\r\n            .cc-btn-ghost:hover{ background:#151515; }\r\n\r\n            .cc-h4{\r\n                margin: 0 0 10px;\r\n                font-size: 16px;\r\n                font-weight: 950;\r\n                color: rgba(255,255,255,.95);\r\n            }\r\n            .cc-small{\r\n                margin: 0 0 12px;\r\n                font-size: 13px;\r\n                color: rgba(255,255,255,.68);\r\n                line-height: 1.45;\r\n            }\r\n\r\n            \/* Subscriptions list *\/\r\n            .cc-list{\r\n                border-radius: 18px;\r\n                border: 1px solid #262626;\r\n                background:#0f0f0f;\r\n                overflow:hidden;\r\n            }\r\n            .cc-row{\r\n                display:flex;\r\n                align-items:center;\r\n                justify-content:space-between;\r\n                gap: 12px;\r\n                padding: 12px 12px;\r\n                border-bottom: 1px solid #212121;\r\n            }\r\n            .cc-row:last-child{ border-bottom:none; }\r\n            .cc-row-main{ min-width:0; }\r\n            .cc-row-title{\r\n                margin:0;\r\n                font-weight: 950;\r\n                font-size: 14px;\r\n                color: rgba(255,255,255,.95);\r\n                white-space: nowrap;\r\n                overflow:hidden;\r\n                text-overflow: ellipsis;\r\n            }\r\n            .cc-row-meta{\r\n                margin: 4px 0 0;\r\n                font-size: 12px;\r\n                color: rgba(255,255,255,.65);\r\n                white-space: nowrap;\r\n                overflow:hidden;\r\n                text-overflow: ellipsis;\r\n            }\r\n            .cc-delbtn{\r\n                width: 40px;\r\n                height: 40px;\r\n                border-radius: 12px;\r\n                border: 1px solid rgba(248,113,113,.5);\r\n                background: rgba(248,113,113,.08);\r\n                cursor:pointer;\r\n                display:flex;\r\n                align-items:center;\r\n                justify-content:center;\r\n                flex:0 0 auto;\r\n            }\r\n            .cc-delbtn:hover{ background: rgba(248,113,113,.14); }\r\n            .cc-delbtn svg{ width: 18px; height: 18px; stroke: rgba(248,113,113,.95); fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }\r\n\r\n            .cc-logout button{\r\n                width: 100%;\r\n                padding: 14px 16px;\r\n                border-radius: 18px;\r\n                background: transparent;\r\n                color: #f87171;\r\n                border: 1px solid rgba(248,113,113,.75);\r\n                font-weight: 950;\r\n                font-size: 15px;\r\n                cursor:pointer;\r\n                margin-top: 14px;\r\n            }\r\n            .cc-logout button:hover{ background: rgba(248,113,113,.08); }\r\n\r\n            .cc-svg{ width:20px; height:20px; fill:none; stroke: rgba(255,255,255,.88); stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }\r\n            .cc-svg-muted{ stroke: rgba(255,255,255,.75); }\r\n        <\/style>\r\n\r\n        <div class=\"cc-wrap\">\r\n            <div class=\"cc-surface\">\r\n\r\n                <div class=\"cc-topbar\">\r\n                    <div class=\"cc-brand\">\r\n                        <div class=\"cc-logo\" aria-hidden=\"true\">\r\n                            <svg class=\"cc-svg\" viewBox=\"0 0 24 24\">\r\n                                <path d=\"M4 12a8 8 0 0 1 16 0\"><\/path>\r\n                                <path d=\"M8 12a4 4 0 0 1 8 0\"><\/path>\r\n                                <path d=\"M12 12v8\"><\/path>\r\n                            <\/svg>\r\n                        <\/div>\r\n                        <div class=\"cc-appname\">CconnectGH<\/div>\r\n                    <\/div>\r\n\r\n                    <div class=\"cc-actions\">\r\n                        <button type=\"button\" class=\"cc-iconbtn\" id=\"cc-refresh-btn\" title=\"Refresh\">\r\n                            <svg class=\"cc-svg cc-svg-muted\" viewBox=\"0 0 24 24\">\r\n                                <path d=\"M21 12a9 9 0 1 1-3-6.7\"><\/path>\r\n                                <path d=\"M21 3v6h-6\"><\/path>\r\n                            <\/svg>\r\n                        <\/button>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"cc-section\">\r\n                    <h3>My Account<\/h3>\r\n                    <div class=\"cc-links\">\r\n                        <a href=\"https:\/\/www.cconnectgh.org\/?page_id=2902\">Edit Profile<\/a>\r\n                        <span style=\"opacity:.5\">\u2022<\/span>\r\n                        <a href=\"https:\/\/www.cconnectgh.org\/?page_id=1735\">Add Subscription<\/a>\r\n                        <span style=\"opacity:.5\">\u2022<\/span>\r\n                        <a href=\"https:\/\/www.cconnectgh.org\/?page_id=2887\">Forgot Password<\/a>\r\n                        <span style=\"opacity:.5\">\u2022<\/span>\r\n                        <a href=\"https:\/\/www.cconnectgh.org\/?page_id=2892\">Reset Password<\/a>\r\n                        <span style=\"opacity:.5\">\u2022<\/span>\r\n                        <a href=\"https:\/\/www.cconnectgh.org\/?page_id=3016\">Delete Account<\/a>\r\n\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"cc-body\">\r\n                    <div id=\"cc-message\"><\/div>\r\n\r\n                    <!-- Logged-out view -->\r\n                    <div id=\"cc-logged-out\" style=\"display:none;\">\r\n                        <div class=\"cc-card\">\r\n                            <p class=\"cc-h4\" style=\"margin-bottom:6px;\">Welcome<\/p>\r\n                            <p class=\"cc-small\">\r\n                                Please login or create an account to view your profile and manage subscriptions.\r\n                            <\/p>\r\n\r\n                            <div class=\"cc-grid\">\r\n                                <a class=\"cc-btn\" href=\"https:\/\/www.cconnectgh.org\/?page_id=2897\">Login<\/a>\r\n                                <a class=\"cc-btn cc-btn-ghost\" href=\"https:\/\/www.cconnectgh.org\/?page_id=1072\">Register<\/a>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- Logged-in view -->\r\n                    <div id=\"cc-logged-in\" style=\"display:none;\">\r\n                        <div class=\"cc-card\">\r\n                            <div class=\"cc-profile-head\">\r\n                                <p class=\"cc-name\" id=\"cc-fullname\">(loading...)<\/p>\r\n                                <span class=\"cc-chip\" id=\"cc-role-chip\">user<\/span>\r\n                            <\/div>\r\n\r\n                            <div class=\"cc-kv\">\r\n                                <div><b>Email:<\/b> <span id=\"cc-email\"><\/span><\/div>\r\n                                <div><b>Phone:<\/b> <span id=\"cc-phone\">(not set)<\/span><\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n\r\n                        <div class=\"cc-card\">\r\n                            <p class=\"cc-h4\">Your subscriptions<\/p>\r\n                            <p class=\"cc-small\">\r\n                                These are your alert subscriptions. You can delete any subscription you no longer want.\r\n                            <\/p>\r\n\r\n                            <div id=\"cc-subs-loading\" class=\"cc-small\" style=\"display:none;\">Loading subscriptions...<\/div>\r\n                            <div id=\"cc-subs-empty\" class=\"cc-small\" style=\"display:none;\">\r\n                                You don\u2019t have any subscriptions yet. Create one here:\r\n                                <a href=\"https:\/\/www.cconnectgh.org\/?page_id=1735\" style=\"color:#93c5fd;font-weight:900;text-decoration:none;\">Add subscription<\/a>\r\n                            <\/div>\r\n\r\n                            <div id=\"cc-subs-list\" class=\"cc-list\" style=\"display:none;\"><\/div>\r\n                        <\/div>\r\n\r\n                        <div class=\"cc-logout\">\r\n                            <button id=\"cc-logout-btn\" type=\"button\">Logout<\/button>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <script>\r\n        (function(){\r\n            const apiBase = \"https:\/\/api.cconnectgh.org\/\";\r\n            const loginUrl = \"https:\/\/www.cconnectgh.org\/?page_id=2897\";\r\n\r\n            const elMsg = document.getElementById('cc-message');\r\n            const elLoggedOut = document.getElementById('cc-logged-out');\r\n            const elLoggedIn = document.getElementById('cc-logged-in');\r\n\r\n            const elFullname = document.getElementById('cc-fullname');\r\n            const elEmail = document.getElementById('cc-email');\r\n            const elPhone = document.getElementById('cc-phone');\r\n            const elRoleChip = document.getElementById('cc-role-chip');\r\n\r\n            const elSubsLoading = document.getElementById('cc-subs-loading');\r\n            const elSubsEmpty = document.getElementById('cc-subs-empty');\r\n            const elSubsList = document.getElementById('cc-subs-list');\r\n\r\n            function setMessage(text, isError){\r\n                if(!elMsg) return;\r\n                if(!text){ elMsg.innerHTML=''; elMsg.className=''; return; }\r\n                elMsg.className = 'cc-msg ' + (isError ? 'cc-msg-error' : 'cc-msg-success');\r\n                elMsg.textContent = text;\r\n            }\r\n\r\n            function showLoggedIn(on){\r\n                if(elLoggedIn) elLoggedIn.style.display = on ? 'block' : 'none';\r\n                if(elLoggedOut) elLoggedOut.style.display = on ? 'none' : 'block';\r\n            }\r\n\r\n            function token(){ return window.localStorage.getItem('cconnect_token'); }\r\n            function storedEmail(){ return window.localStorage.getItem('cconnect_user_email') || ''; }\r\n\r\n            async function fetchJson(url, opts){\r\n                const resp = await fetch(url, opts);\r\n                const data = await resp.json().catch(()=> ({}));\r\n                return { resp, data };\r\n            }\r\n\r\n            function subsResetUI(){\r\n                if(elSubsLoading) elSubsLoading.style.display = 'none';\r\n                if(elSubsEmpty) elSubsEmpty.style.display = 'none';\r\n                if(elSubsList) { elSubsList.style.display='none'; elSubsList.innerHTML=''; }\r\n            }\r\n\r\n            function renderSubscriptions(items){\r\n                subsResetUI();\r\n\r\n                if(!items || !Array.isArray(items) || items.length === 0){\r\n                    if(elSubsEmpty) elSubsEmpty.style.display = 'block';\r\n                    return;\r\n                }\r\n\r\n                if(!elSubsList) return;\r\n                elSubsList.style.display = 'block';\r\n\r\n                const esc = (s) => String(s ?? '').replace(\/[&<>\"']\/g, m => ({\r\n                    '&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#039;'\r\n                }[m]));\r\n\r\n                elSubsList.innerHTML = items.map(sub => {\r\n                    const id = sub.id ?? sub.subscription_id ?? sub._id ?? '';\r\n                    const email = sub.email || '';\r\n                    const phone = sub.phone || '';\r\n                    const region = sub.region || '';\r\n                    const district = sub.district || '';\r\n                    const constituency = sub.constituency || '';\r\n                    const category = sub.category || '';\r\n                    const type = sub.subscriber_type || '';\r\n\r\n                    const title = email ? email : (phone ? phone : 'Subscription');\r\n                    const metaParts = [];\r\n                    if(phone) metaParts.push('\ud83d\udcf1 ' + phone);\r\n                    if(region) metaParts.push('Region: ' + region);\r\n                    if(district) metaParts.push('District: ' + district);\r\n                    if(constituency) metaParts.push('Constituency: ' + constituency);\r\n                    if(category) metaParts.push('Category: ' + category);\r\n                    if(type) metaParts.push('Type: ' + type);\r\n\r\n                    const meta = metaParts.join(' \u2022 ');\r\n\r\n                    return `\r\n                        <div class=\"cc-row\" data-sub-id=\"${esc(id)}\">\r\n                            <div class=\"cc-row-main\">\r\n                                <p class=\"cc-row-title\">${esc(title)}<\/p>\r\n                                <p class=\"cc-row-meta\">${esc(meta)}<\/p>\r\n                            <\/div>\r\n                            <button class=\"cc-delbtn\" type=\"button\" title=\"Delete subscription\" data-del-id=\"${esc(id)}\">\r\n                                <svg viewBox=\"0 0 24 24\">\r\n                                    <path d=\"M3 6h18\"><\/path>\r\n                                    <path d=\"M8 6V4h8v2\"><\/path>\r\n                                    <path d=\"M19 6l-1 14H6L5 6\"><\/path>\r\n                                    <path d=\"M10 11v6\"><\/path>\r\n                                    <path d=\"M14 11v6\"><\/path>\r\n                                <\/svg>\r\n                            <\/button>\r\n                        <\/div>\r\n                    `;\r\n                }).join('');\r\n\r\n                elSubsList.querySelectorAll('button[data-del-id]').forEach(btn => {\r\n                    btn.addEventListener('click', async () => {\r\n                        const id = btn.getAttribute('data-del-id');\r\n                        if(!id) return;\r\n\r\n                        const ok = confirm('Delete this subscription?');\r\n                        if(!ok) return;\r\n\r\n                        await deleteSubscription(id);\r\n                    });\r\n                });\r\n            }\r\n\r\n            async function loadSubscriptions(){\r\n                subsResetUI();\r\n                if(elSubsLoading) elSubsLoading.style.display = 'block';\r\n\r\n                const t = token();\r\n                const email = storedEmail();\r\n\r\n                \/\/ \u2705 Attempts (adjust if your backend uses different routes)\r\n                const attempts = [\r\n                    { url: apiBase + 'subscriptions\/me', auth: true }, \/\/ preferred\r\n                    { url: apiBase + 'subscriptions?email=' + encodeURIComponent(email), auth: !!t },\r\n                ];\r\n\r\n                for(const a of attempts){\r\n                    try{\r\n                        const headers = {};\r\n                        if(a.auth && t) headers['Authorization'] = 'Bearer ' + t;\r\n\r\n                        const { resp, data } = await fetchJson(a.url, { method:'GET', headers });\r\n\r\n                        if(resp.ok){\r\n                            const items = Array.isArray(data) ? data : (data.items || data.results || data.data || []);\r\n                            renderSubscriptions(items);\r\n                            return;\r\n                        }\r\n                    }catch(e){\r\n                        console.error('subs attempt failed', a.url, e);\r\n                    }\r\n                }\r\n\r\n                subsResetUI();\r\n                if(elSubsEmpty){\r\n                    elSubsEmpty.style.display = 'block';\r\n                    elSubsEmpty.textContent = 'Could not load subscriptions right now.';\r\n                }\r\n            }\r\n\r\n            async function deleteSubscription(id){\r\n                const t = token();\r\n\r\n                const tries = [\r\n                    { url: apiBase + 'subscriptions\/' + encodeURIComponent(id), auth: true },\r\n                    { url: apiBase + 'subscriptions\/' + encodeURIComponent(id), auth: false },\r\n                ];\r\n\r\n                for(const tr of tries){\r\n                    try{\r\n                        const headers = {};\r\n                        if(tr.auth && t) headers['Authorization'] = 'Bearer ' + t;\r\n\r\n                        const resp = await fetch(tr.url, { method:'DELETE', headers });\r\n                        if(resp.ok){\r\n                            setMessage('Subscription deleted.', false);\r\n                            await loadSubscriptions();\r\n                            return;\r\n                        }\r\n                    }catch(e){\r\n                        console.error('delete failed', tr.url, e);\r\n                    }\r\n                }\r\n\r\n                setMessage('Failed to delete subscription. Please try again.', true);\r\n            }\r\n\r\n            async function loadProfile(){\r\n                const t = token();\r\n                if(!t){\r\n                    showLoggedIn(false);\r\n                    setMessage('', false);\r\n                    return;\r\n                }\r\n\r\n                try{\r\n                    setMessage('Loading your profile...', false);\r\n\r\n                    const { resp, data } = await fetchJson(apiBase + 'auth\/me', {\r\n                        method:'GET',\r\n                        headers:{ 'Authorization': 'Bearer ' + t }\r\n                    });\r\n\r\n                    if(!resp.ok){\r\n                        showLoggedIn(false);\r\n                        setMessage('Session expired. Please login again.', true);\r\n                        return;\r\n                    }\r\n\r\n                    showLoggedIn(true);\r\n\r\n                    elFullname.textContent = data.full_name || '(not set)';\r\n                    elEmail.textContent = data.email || storedEmail();\r\n                    elPhone.textContent = data.phone || '(not set)';\r\n                    elRoleChip.textContent = (data.role || 'user').toString();\r\n\r\n                    await loadSubscriptions();\r\n\r\n                    setMessage('', false);\r\n                }catch(err){\r\n                    console.error(err);\r\n                    showLoggedIn(false);\r\n                    setMessage('Unexpected error loading profile.', true);\r\n                }\r\n            }\r\n\r\n            function logout(){\r\n                window.localStorage.removeItem('cconnect_token');\r\n                window.localStorage.removeItem('cconnect_user_email');\r\n                showLoggedIn(false);\r\n                setMessage('You have been logged out.', false);\r\n                window.location.href = $url_login;\r\n            }\r\n\r\n            document.addEventListener('DOMContentLoaded', function(){\r\n                const refreshBtn = document.getElementById('cc-refresh-btn');\r\n                if(refreshBtn) refreshBtn.addEventListener('click', loadProfile);\r\n\r\n                const logoutBtn = document.getElementById('cc-logout-btn');\r\n                if(logoutBtn) logoutBtn.addEventListener('click', logout);\r\n\r\n                loadProfile();\r\n            });\r\n        })();\r\n        <\/script>\r\n        <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":204,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2911","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/pages\/2911","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2911"}],"version-history":[{"count":19,"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/pages\/2911\/revisions"}],"predecessor-version":[{"id":2994,"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/pages\/2911\/revisions\/2994"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/media\/204"}],"wp:attachment":[{"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2911"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}