const actions = {
  loginSuccess: (token) => ({
    type: "LOGIN_UPDATE",
    login: {
      loggedIn: true,
      token,
    },
  }),
  logout: () => ({
    type: "LOGOUT",
  }),
  userInfoUpdate: (userInfo) => ({
    type: "USER_INFO_UPDATE",
    userInfo,
  }),
  roomSave: (room) => ({
    type: "ROOM_SAVE",
    room,
  }),
  sceneSave: (scene) => ({
    type: "SCENE_SAVE",
    scene,
  }),
  deviceSave: (device) => ({
    type: "DEVICE_SAVE",
    device,
  }),
  hostDeviceSave: (hostId, device) => ({
    type: "HOST_DEVICE_SAVE",
    hostId,
    device,
  }),
  triggerSave: (automation) => ({
    type: "TRIGGER_SAVE",
    automation,
  }),

  scenePrioritySave: (automation) => ({
    type: "SCENE_PRIORITY_SAVE",
    automation,
  }),

  automationSave: (automation) => ({
    type: "AUTOMATION_SAVE",
    automation,
  }),
  automationsUpdate: (automations) => ({
    type: "AUTOMATION_UPDATE",
    automations,
  }),
  stateSave: (sceneState) => ({
    type: "STATE_SAVE",
    sceneState,
  }),
  statesUpdate: (sceneId, sceneStates) => ({
    type: "STATES_UPDATE",
    sceneId,
    sceneStates,
  }),
  devicesUpdate: (roomId, devices, partial = false) => ({
    type: "DEVICES_UPDATE",
    roomId,
    devices,
    partial,
  }),
  hostDevicesUpdate: (hostId, devices) => ({
    type: "HOST_DEVICES_UPDATE",
    hostId,
    devices,
  }),
  stateDelete: (stateId) => ({
    type: "STATE_DELETE",
    stateId,
  }),
  deviceOperationUpdate: (devices) => ({
    type: "DEVICES_UPDATE",
    devices,
    partial: true,
  }),
  roomsUpdate: (rooms) => ({
    type: "ROOMS_UPDATE",
    rooms,
  }),
  hostRoomsUpdate: (hostId, rooms) => ({
    type: "HOST_ROOMS_UPDATE",
    hostId,
    rooms,
  }),
  roomDelete: (roomId) => ({
    type: "ROOM_DELETE",
    roomId,
  }),
  automationDelete: (id) => ({
    type: "AUTOMATION_DELETE",
    id,
  }),
  sceneDelete: (sceneId) => ({
    type: "SCENE_DELETE",
    sceneId,
  }),
  scenesUpdate: (scenes) => ({
    type: "SCENES_UPDATE",
    scenes,
  }),
  hostScenesUpdate: (hostId, scenes) => ({
    type: "HOST_SCENES_UPDATE",
    hostId,
    scenes,
  }),
  deviceDelete: (deviceId) => ({
    type: "DEVICE_DELETE",
    deviceId,
  }),
  hostsUpdate: (hosts) => ({
    type: "HG_UPDATE",
    key: "hosts",
    value: hosts,
  }),
  guestsUpdate: (hosts) => ({
    type: "HG_UPDATE",
    key: "guests",
    value: hosts,
  }),
  getHostDevices: (host) => ({
    type: "GET_HOST_DEVICES",
    host,
  }),
  guestUpdate: (guests) => ({
    type: "HG_UPDATE",
    key: "guests",
    value: guests,
  }),
};

export const appActions = {
  // -1 for home view
  setActiveRoom: (activeRoom = -1) => ({
    type: "SET_ACTIVE",
    key: "activeRoom",
    value: activeRoom,
  }),
  setActiveTab: (activeTab) => ({
    type: "SET_ACTIVE",
    key: "activeTab",
    value: activeTab,
  }),
  setActiveScene: (activeScene = -1) => ({
    type: "SET_ACTIVE",
    key: "activeScene",
    value: activeScene,
  }),
  setActiveHost: (activeHost = -1) => ({
    type: "SET_ACTIVE",
    key: "activeHost",
    value: activeHost,
  }),
};

export default actions;
