Takvim ve zamanlama
Control Center, günün filonun yanında yer alsın diye Google Calendar’a bağlanır. Etkinliklerini eşitler, onları ay, hafta, gün ve ajanda görünümlerinde gösterir, bir toplantı başlamadan önce seni uyarır ve her etkinliği kaydedilmiş, özetlenmiş bir toplantıya dönüştürür.
Google’da neleri değiştirir
Bölüm başlığı “Google’da neleri değiştirir”Neredeyse hiçbir şeyi. Entegrasyon etkinlikleri çeker ve gösterir. Etkinlik
oluşturmaz, düzenlemez, silmez veya davetlere yanıt vermez. Yerleşik ya da kendi
getirdiğin her cihaz kodu bağlantısı, calendar.readonly ve openid email
kapsamlarını ister.
Etkinlikler sunucuda, çalışma alanının kendi veritabanına
(<dataDir>/<workspaceId>/workspace.db) eşitlenir ve her istemci tarafından RPC
üzerinden görüntülenir. Hiçbir istemci bir Google kimlik bilgisi tutmaz.
Çalışma alanı başına hesaplar
Bölüm başlığı “Çalışma alanı başına hesaplar”Takvim hesapları, Control Center’daki her şey gibi çalışma alanı kapsamındadır. Her çalışma alanı kendi Google hesabını (ya da birkaçını) bağlar ve bir çalışma alanının etkinlikleri ile token’ları başka bir çalışma alanından asla görünmez. Çalışma alanı değiştirmek, gördüğün takvimleri de değiştirir.
Bir çalışma alanı birden çok Google hesabı bağlayabilir; örneğin bir iş hesabı ile bir kişisel hesap ve bunların etkinlikleri aynı görünümlerde birleştirilir.
Oturum açma neden bir cihaz kodu
Bölüm başlığı “Oturum açma neden bir cihaz kodu”Headless cc_server’ın bir OAuth yönlendirmesini yakalayacak tarayıcısı yoktur.
Bu yüzden tarayıcı kullanmaz: cihaz kodu izniyle (RFC 8628) yetkilendirir.
Sunucu kısa bir kullanıcı kodu ile bir Google URL’si gösterir, sen tarayıcısı
olan herhangi bir cihazda onaylarsın ve sunucu sen onaylayana kadar yoklar.
Headless bir kurulumun bir hesabı bağlayabilmesinin nedeni tam olarak,
barındırılacak bir yönlendirme uç noktasının olmamasıdır.
Kendi kimlik bilgilerini getirmeden önce bilmen gereken sonuç şudur: istemci
türü Google’ın “TV’ler ve Sınırlı Girdi cihazları” türü olmalıdır. Google bu
istemci türüne yalnızca izin listesine alınmış bir kapsam kümesi verir ve
Calendar’ın bu tür için izinli olmadığı bir proje invalid_scope ile başarısız
olur — bunun yerine bir loopback ya da web istemcisine ihtiyacın olur.
Token’lar sunucudan asla ayrılmaz. Sunucunun veri dizinindeki secrets.json
dosyasına, google_google:<workspaceId>:<email> anahtarıyla, veritabanlarının
yanına ve aynı ana makine dosya sistemi güven sınırının altına yazılır. Sunucu
erişimi otomatik olarak yeniler ve Google bir hesabı kalıcı olarak geçersiz
kıldığında (iptal edilmiş ya da süresi çoktan dolmuş bir oturum) sessizce
başarısız olmak yerine CalendarAuthExpired yayımlar ve bir yeniden bağlan
banner’ı gösterir.
Kaynaktan bir derleme hiç Google kimlik bilgisi içermez — kendi istemci
kimliğini ve gizli anahtarını sen sağlarsın. Resmî sürüm derlemeleri, bağlantı
akışının kutudan çıktığı gibi çalışması için gizli olmayan bir cihaz kodu
istemcisi gömer; sunucu yalnızca ona atıfta bulunan bir işaretçi saklar, asla
bir kopyasını değil. Ortamdaki GOOGLE_OAUTH_CLIENT_ID (ve gizli anahtarı) her
zaman gömülü çiftin önüne geçer. --google-client-id diye bir bayrak bilinçli
olarak yoktur: bilinmeyen bayraklar yok sayılır ve komut satırındaki bir gizli
anahtar ps üzerinden okunabilir.
Kendi Google projenle çalışmak için Bir Google Calendar bağlama sayfasına bak.
Eşitleme
Bölüm başlığı “Eşitleme”Sunucu, bağlı her hesabın etkinliklerinden oluşan kayan bir pencereyi çeker — hesaptaki yalnızca birincil takvim değil, her takvim — her iki dakikada bir, ayrıca istendiğinde (başlatma, bağlama, elle yenileme). Kısa sıklık karşılanabilir bir maliyettir, çünkü tarama artımlıdır: her takvim kendi eşitleme token’ını taşır, böylece değişmemiş bir takvim beş aylık bir pencereyi yeniden çekmek yerine neredeyse boş tek bir yanıta mal olur.
Yinelenen etkinlikler sunucu tarafında açılır, böylece hiçbir istemci bir yineleme kuralını ayrıştırmaz. Geçerli pencerenin dışındaki bir aya gidildiğinde o aralık tembelce yüklenir. Silinen ya da aralık dışına taşınan etkinlikler bir sonraki eşitlemede uzlaştırılarak kaldırılır.
Görünümler
Bölüm başlığı “Görünümler”| Görünüm | Neyi gösterir |
|---|---|
| Ay | Tam bir ay ızgarası (kalender paketiyle desteklenir) |
| Hafta | Bir haftanın zamanlanmış etkinlikleri, bir zaman ızgarasında |
| Gün | Tek bir günün zamanlanmış etkinlikleri, bir zaman ızgarasında |
| Ajanda | Yaklaşan etkinliklerin kaydırılabilir listesi |
Takvimi /calendar adresinde aç; bir etkinliği seçmek, ayrıntısını
/calendar/:eventId adresinde açar. Seçtiğin görünüm o istemcinin kendi
tercihlerinde saklanır, dolayısıyla başka bir cihazda peşinden gelmez.
Toplantı uyarıları
Bölüm başlığı “Toplantı uyarıları”Dakikada bir çalışan bir zamanlayıcı, yapılandırılabilir bir önceden uyarı
penceresi içinde başlayan etkinlikleri tarar ve bir “Toplantı yakında
başlıyor” bildirimi gönderir (bir MeetingStartingSoon
alan olayı). Bildirim, varsa katılım
URL’sini taşır ve tıklandığında etkinlik ayrıntısını açar. Uyarılar etkinliğin
alertedAt değerine göre yinelenmez, böylece aynı toplantı asla iki kez uyarı
vermez; yeniden başlatmalar arasında da, uygulama kapalıyken başlama anı geçmiş
bir etkinlik de asla yeniden oynatılmaz.
Kolayca takılabileceğin iki sınır var. Zamanlayıcı masaüstünde, istemci tarafında ve yalnızca o an açık olan çalışma alanı için çalışır — içinde olmadığın bir çalışma alanı hiçbir uyarı vermez. Web yapımında ise hiçbir işletim sistemi bildirim mekanizması yoktur, dolayısıyla o da hiç uyarı vermez.
Kaydet ve bağla
Bölüm başlığı “Kaydet ve bağla”Bir takvim etkinliğinden, etkinliğin başlığıyla başlatılan bir toplantı kaydı başlatabilirsin. Control Center, kayıt ile etkinlik arasında bire bir bir bağ saklar, böylece toplantının notları ile takvim kaydı, iki özellikten hiçbiri diğerine bağımlı olmadan bağlantılı kalır.
Kaydı başlat ve bağla yalnızca masaüstünde bulunur. Web istemcisinde bu eylem, kaydın kullanılamadığını bildirir — oysa toplantılar ekranının kendi kayıt akışı tarayıcıda çalışır.
Ayrıca bakınız
Bölüm başlığı “Ayrıca bakınız”- Toplantılar ve transkripsiyon: bir kaydı başlattıktan sonra ne olur
- Çalışma alanları ve yalıtım: takvim hesapları neden çalışma alanı başına
- Alan olayları:
MeetingStartingSoonveCalendarAuthExpired - Bir Google Calendar bağlama
- Bir toplantıyı kaydetme ve özetleme