Skip to content

Commit ea6d279

Browse files
Sync pull code added
1 parent 78429ff commit ea6d279

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

src/helper/locales.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ interface ApiConfig {
2424
interface LocaleResource {
2525
locale: string;
2626
resource: Record<string, any>;
27+
type: string;
2728
}
2829

2930
export const hasAnyDeltaBetweenLocalAndRemoteLocales = async (): Promise<boolean> => {
@@ -149,23 +150,25 @@ export const syncLocales = async (syncMode: SyncMode): Promise<void> => {
149150
}
150151

151152
for (const file of localFiles) {
152-
const locale: string = path.basename(file, '.json');
153+
let locale: string = path.basename(file, '.json');
153154
console.log(`Processing local file: ${locale}`);
155+
const localeType = locale.includes('schema') ? 'locale_schema' : 'locale';
156+
locale = locale.includes('schema') ? locale.replace('.schema', '') : locale;
157+
154158
let localData: Record<string, any>;
155159
try {
156160
localData = JSON.parse(await fs.readFile(path.join(localesFolder, file), 'utf-8'));
157161
} catch (err) {
158162
console.error(`Error reading file ${file}: ${(err as Error).message}`);
159163
continue;
160164
}
161-
162-
const matchingItem = data.items.find((item: LocaleResource) => item.locale === locale);
165+
const matchingItem = data.items.find((item: LocaleResource) => item.locale === locale && item.type === localeType);
163166
if (!matchingItem) {
164167
console.log(`No matching item found for locale: ${locale}`);
165-
unmatchedLocales.push({ locale, resource: localData });
168+
unmatchedLocales.push({ locale, resource: localData, type: localeType });
166169
if (syncMode === SyncMode.PUSH) {
167170
console.log(`Creating new resource in API for locale: ${locale}`);
168-
await createLocaleInAPI(localData, locale, 'locale');
171+
await createLocaleInAPI(localData, locale, localeType);
169172
}
170173
} else {
171174
if (syncMode === SyncMode.PUSH) {
@@ -193,9 +196,9 @@ export const syncLocales = async (syncMode: SyncMode): Promise<void> => {
193196
if (syncMode === SyncMode.PULL) {
194197
for (const item of data.items) {
195198
const locale: string = item.locale;
196-
const localeFile: string = path.join(localesFolder, `${locale}.json`);
199+
const localeFile = path.join(localesFolder, `${item.locale}${item.type === 'locale_schema' ? '.schema' : ''}.json`);
197200
const localeData: Record<string, any> = item.resource;
198-
201+
console.log('locale_schema file',localeFile, locale, item.type)
199202
if (!localeData) {
200203
console.log(`Skipping empty resource for locale: ${locale}`);
201204
continue;
@@ -235,15 +238,15 @@ export const syncLocales = async (syncMode: SyncMode): Promise<void> => {
235238
}
236239
};
237240

238-
const createLocaleInAPI = async (data: Record<string, any>, locale: string, type: string): Promise<void> => {
241+
const createLocaleInAPI = async (data: Record<string, any>, locale: string, localeType: string): Promise<void> => {
239242
try {
240243
console.log(`Creating resource in API for locale: ${locale}`);
241244
const activeContext = getActiveContext();
242245
const response: AxiosResponse = await LocalesService.createLocale(null, {
243246
theme_id: activeContext.theme_id,
244247
locale: locale,
245248
resource: data,
246-
type: type,
249+
type: localeType,
247250
template: false,
248251
})
249252
console.log('Locale created in API:', response.data);

0 commit comments

Comments
 (0)