Category API
Toss POS 플러그인에서 메뉴를 카테고리별로 관리하는 API예요. 메뉴를 논리적으로 그룹화하여 보기 쉽게 구성할 수 있어요.
Types
PluginCatalogCategory
메뉴 카테고리의 정보를 나타내는 객체예요.
ts
{
id: number; // 카테고리의 고유 ID
title: string; // 카테고리명
titleI18n?: PluginLanguagePack; // 다국어 지원 카테고리명
}| 필드 | 타입 | 필수 | 설명 | 예시 |
|---|---|---|---|---|
| id | number | 필수 | 카테고리의 고유 ID | 1 |
| title | string | 필수 | 카테고리명 | '커피' |
| titleI18n | PluginLanguagePack | 선택 | 다국어 지원을 위한 카테고리명 |
Methods
getCategory
카테고리 하나를 조회해요.
ts
import { posPluginSdk } from '@tossplace/pos-plugin-sdk';
/**
* 카테고리 목록 조회
* @returns 카테고리 목록
*/
const category = await posPluginSdk.category.getCategory(categoryId);Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
categoryId | number | O | 조회할 카테고리의 ID |
Response
Promise<PluginCatalogCategory> — 조회한 카테고리 정보예요.
getCategories
메뉴의 카테고리 목록을 조회해요.
ts
import { posPluginSdk } from '@tossplace/pos-plugin-sdk';
/**
* 카테고리 목록 조회
* @returns 카테고리 목록
*/
const categories = await posPluginSdk.category.getCategories();Parameters
파라미터가 없어요.
Response
Promise<PluginCatalogCategory[]> — 매장에 등록된 카테고리 목록이에요.
on
이벤트 구독을 위한 메서드예요.
Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
event | 'update' | 'add' | 'delete' | O | 구독할 이벤트 |
callback | (id: number) => void | O | 변경된 카테고리 ID를 받아 실행돼요 |
Response
반환값이 없어요.
update
카테고리가 업데이트 되었을 때 발생하는 이벤트예요.
ts
import { posPluginSdk } from '@tossplace/pos-plugin-sdk';
posPluginSdk.category.on('update', (id: number) => {
console.log('업데이트 된 카테고리 ID:', id);
});delete
카테고리가 삭제되었을 때 발생하는 이벤트예요.
ts
import { posPluginSdk } from '@tossplace/pos-plugin-sdk';
posPluginSdk.category.on('delete', (id: number) => {
console.log('삭제 된 카테고리 ID:', id);
});add
카테고리가 추가되었을 때 발생하는 이벤트예요.
ts
import { posPluginSdk } from '@tossplace/pos-plugin-sdk';
posPluginSdk.category.on('add', (id: number) => {
console.log('추가 된 카테고리 ID:', id);
});사용 예시
카테고리 목록 조회 및 처리
ts
import { posPluginSdk } from '@tossplace/pos-plugin-sdk';
class MenuManager {
/**
* 카테고리 목록 조회 및 처리
*/
async loadCategories() {
try {
const categories = await posPluginSdk.category.getCategories();
this.displayCategories(categories);
} catch (error) {
console.error('카테고리 조회 실패:', error);
}
}
/**
* 카테고리 정보 표시
* @param categories 카테고리 목록
*/
private displayCategories(categories: PluginCatalogCategory[]) {
console.log('=== 카테고리 목록 ===');
categories.forEach((category) => {
console.log(`ID: ${category.id}`);
console.log(`이름: ${category.title}`);
if (category.titleI18n) {
console.log('다국어 지원:');
Object.entries(category.titleI18n).forEach(([lang, name]) => {
console.log(` ${lang}: ${name}`);
});
}
console.log('-------------------');
});
}
}
// 사용 예시
async function manageMenu() {
const menuManager = new MenuManager();
await menuManager.loadCategories();
}다국어 지원 카테고리 처리
ts
import { posPluginSdk } from '@tossplace/pos-plugin-sdk';
/**
* 현재 언어에 맞는 카테고리명 조회
* @param category 카테고리 정보
* @param language 현재 언어 코드
* @returns 카테고리명
*/
function getCategoryTitle(category: PluginCatalogCategory, language: string): string {
if (category.titleI18n && category.titleI18n[language]) {
return category.titleI18n[language];
}
return category.title;
}
// 사용 예시
async function displayLocalizedCategories() {
const categories = await posPluginSdk.category.getCategories();
const currentLanguage = 'en'; // 현재 언어 코드
categories.forEach(category => {
const title = getCategoryTitle(category, currentLanguage);
console.log(`카테고리: ${title}`);
});
}