GridTableHeader.hooks.tsx 884 B

12345678910111213141516171819202122232425
  1. import { useAppSelector } from '$app/stores/store';
  2. import { DatabaseController } from '@/appflowy_app/stores/effects/database/database_controller';
  3. import { TypeOptionController } from '@/appflowy_app/stores/effects/database/field/type_option/type_option_controller';
  4. import { None } from 'ts-results';
  5. export const useGridTableHeaderHooks = function (controller: DatabaseController) {
  6. const database = useAppSelector((state) => state.database);
  7. const onAddField = async () => {
  8. // TODO: move this to database controller hook
  9. const fieldController = new TypeOptionController(controller.viewId, None);
  10. await fieldController.initialize();
  11. };
  12. return {
  13. fields: Object.values(database.fields).map((field) => {
  14. return {
  15. fieldId: field.fieldId,
  16. name: field.title,
  17. fieldType: field.fieldType,
  18. };
  19. }),
  20. onAddField,
  21. };
  22. };