Ana içeriğe geç

Storage API

src/shared/storage.ts — Tüm Chrome storage erişimi bu modül üzerinden yapılmalıdır.

Önemli Kural

chrome.storage API'sine doğrudan erişim yasaktır. Tüm storage işlemleri bu modül üzerinden yapılmalıdır.

Yapılandırma Fonksiyonları

getConfig()

Mevcut yapılandırmayı yükler.

async function getConfig(): Promise<GrayToolConfig>

Davranış:

  • chrome.storage.sync üzerinden yapılandırmayı okur
  • Yapılandırma bulunamazsa varsayılan değerleri döner
  • v1 format algılanırsa otomatik olarak v2'ye taşır (migrate)

Kullanım:

import { getConfig } from "../shared/storage";

const config = await getConfig();
console.log(config.version); // 2
console.log(config.buttons); // ButtonConfig[]

saveConfig()

Yapılandırmayı kısmi güncelleme ile kaydeder.

async function saveConfig(partial: Partial<GrayToolConfig>): Promise<void>

Davranış:

  • Mevcut yapılandırmayı okur
  • Verilen kısmi güncellemeyi mevcut yapılandırmayla birleştirir
  • chrome.storage.sync üzerine yazar
  • chrome.runtime.lastError kontrolü yapar

Kullanım:

import { saveConfig } from "../shared/storage";

// Yalnızca settings'i güncelle
await saveConfig({
settings: {
...config.settings,
enabled: false,
},
});

// Buton ekle
await saveConfig({
buttons: [...config.buttons, newButton],
});

getDefaultConfig()

Varsayılan v2 yapılandırma şablonunu döner.

function getDefaultConfig(): GrayToolConfig

Dönen Değer:

{
version: 2,
urlPatterns: [],
buttons: [],
globalFieldConfig: {
defaultMessageField: null,
rowFieldPrefixes: ["msg.", "context.", ""],
parseJsonStrings: true,
jsonParseMaxDepth: 5,
},
settings: {
enabled: true,
showMessageDetailButton: true,
jsonViewerEnabled: true,
keyboardShortcutsEnabled: true,
searchHistoryEnabled: true,
},
}

Arama Geçmişi Fonksiyonları

getSearchHistory()

Belirli URL pattern için arama geçmişini getirir.

async function getSearchHistory(patternId: string): Promise<SearchHistoryEntry[]>

Parametreler:

  • patternId — URL pattern'in benzersiz kimliği

Davranış:

  • chrome.storage.local üzerinden okur
  • Boş veya tanımsız ise boş dizi döner
  • Maksimum 50 giriş saklanır

saveSearchQuery()

Bir arama sorgusunu geçmişe kaydeder.

async function saveSearchQuery(patternId: string, query: string): Promise<void>

Parametreler:

  • patternId — URL pattern'in benzersiz kimliği
  • query — Kaydedilecek arama sorgusu

Davranış:

  • Aynı sorgu zaten mevcutsa günceller (tekrar zaman damgası)
  • 50 sınırını aşarsa en eski girişi siler
  • chrome.storage.local üzerine yazar

clearSearchHistory()

Belirli URL pattern için tüm arama geçmişini temizler.

async function clearSearchHistory(patternId: string): Promise<void>

V1 → V2 Migrasyon

getConfig() çağrıldığında v1 format algılanırsa otomatik migrasyon yapılır:

Dönüştürülen Özellikler

V1V2
paramMappingfieldBindings
baseUrl + routeurl (template)
urlPatternIds: [] (tümü)
Button nameButton label
Route conditionsButton conditions

Migrasyon Akışı

v1 config algılandı

Her buton için:
├─ paramMapping → fieldBindings dönüşümü
├─ URL template oluşturma
├─ Koşulları koruma
└─ urlPatternIds boş (tüm pattern'ler)

v2 config oluşturuldu

chrome.storage.sync'e kaydet

v2 config döndür

Storage Anahtarları

AnahtarDepolamaAçıklama
graytool_configsyncAna yapılandırma
graytool_search_history_{patternId}localArama geçmişi
graytool_tabs_collapsedlocalStorageTab daraltma durumu