// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

library fuchsia.modular.storymodel;

using fuchsia.modular;

// IMPORTANT: StoryModel must only contain field types that are cloneable.
//
// The `StoryModel` FIDL table is used to represent the state of a story.
// `sessionmgr` keeps a separate `StoryModel` in memory for each running story,
// and also persists changes to it onto storage.
table StoryModel {
  // The name of the story, set at story create time.
  //
  // Always set. Immutable.
  1: string:MAX_STORY_NAME_LENGTH name;

  // An enum describing how the story should be displayed, when focused,
  // in the StoryShell.
  //
  // Always set. Defaults to StoryVisibilityState::DEFAULT.
  2: fuchsia.modular.StoryVisibilityState visibility_state;

  // A list of modules present in the story.
  //
  // Always set. Defaults to an empty list.
  3: vector<ModuleModel>:MAX_MODULES_PER_STORY modules;
};

table ModuleModel {
  // The name of the module, set by the client that requested creation
  // of the module. The name uniquely identifies this module within
  // the story.
  //
  // Always set. Immutable.
  1: string:MAX_MODULE_NAME_LENGTH name;
};