RIBs architecture's data flow












1
















  1. So the data flow of RIBs architecture is basically from top to bottom. So does that mean all the data stream that child RIBs needs, need to be prepared/ready ahead of time at the Root RIBs?
    If yes, which means all the APIs/networking calls/database operations are all happened within the Root RIBs?

  2. If the Root RIBs stores the whole app state, are all those streams being initialized at the boot time? Can I lazy initialize part of them as some of them are not required if that particular child RIBs is not being attached to the tree yet?

  3. Referring to this article from Uber engineering blog
    https://eng.uber.com/deep-scope-hierarchies/



New Rider App: Deep Scope Hierarchy



Given that two and three level scope hierarchies have major problems, we did not limit ourselves to a set number of scope layers when we were developing the new app. Instead, we created new intermediary scope layers wherever useful. For example, the PreRequest scope is used to store objects that need to be shared by all PreRequest screen states such as Home, ProductSelection, and RefinementSteps.




Are there any criteria, what kind of object/state or when should we use the intermediary scope layers approach, but not creating a DI stream at Root and feed the child Ribs as a dependency?

What should we concern? Does that require API call? Not business logic related states, like UI logics?



The use case that comes up in my mind is maybe the registration section of an app.



We may need to create an intermediary scope layer to store the information that user filled in (up until the user hit the register/finish button). If the user clicks the register button, that the user object will be sent back to the parent RIBs via listener? Correct?










share|improve this question



























    1
















    1. So the data flow of RIBs architecture is basically from top to bottom. So does that mean all the data stream that child RIBs needs, need to be prepared/ready ahead of time at the Root RIBs?
      If yes, which means all the APIs/networking calls/database operations are all happened within the Root RIBs?

    2. If the Root RIBs stores the whole app state, are all those streams being initialized at the boot time? Can I lazy initialize part of them as some of them are not required if that particular child RIBs is not being attached to the tree yet?

    3. Referring to this article from Uber engineering blog
      https://eng.uber.com/deep-scope-hierarchies/



    New Rider App: Deep Scope Hierarchy



    Given that two and three level scope hierarchies have major problems, we did not limit ourselves to a set number of scope layers when we were developing the new app. Instead, we created new intermediary scope layers wherever useful. For example, the PreRequest scope is used to store objects that need to be shared by all PreRequest screen states such as Home, ProductSelection, and RefinementSteps.




    Are there any criteria, what kind of object/state or when should we use the intermediary scope layers approach, but not creating a DI stream at Root and feed the child Ribs as a dependency?

    What should we concern? Does that require API call? Not business logic related states, like UI logics?



    The use case that comes up in my mind is maybe the registration section of an app.



    We may need to create an intermediary scope layer to store the information that user filled in (up until the user hit the register/finish button). If the user clicks the register button, that the user object will be sent back to the parent RIBs via listener? Correct?










    share|improve this question

























      1












      1








      1









      1. So the data flow of RIBs architecture is basically from top to bottom. So does that mean all the data stream that child RIBs needs, need to be prepared/ready ahead of time at the Root RIBs?
        If yes, which means all the APIs/networking calls/database operations are all happened within the Root RIBs?

      2. If the Root RIBs stores the whole app state, are all those streams being initialized at the boot time? Can I lazy initialize part of them as some of them are not required if that particular child RIBs is not being attached to the tree yet?

      3. Referring to this article from Uber engineering blog
        https://eng.uber.com/deep-scope-hierarchies/



      New Rider App: Deep Scope Hierarchy



      Given that two and three level scope hierarchies have major problems, we did not limit ourselves to a set number of scope layers when we were developing the new app. Instead, we created new intermediary scope layers wherever useful. For example, the PreRequest scope is used to store objects that need to be shared by all PreRequest screen states such as Home, ProductSelection, and RefinementSteps.




      Are there any criteria, what kind of object/state or when should we use the intermediary scope layers approach, but not creating a DI stream at Root and feed the child Ribs as a dependency?

      What should we concern? Does that require API call? Not business logic related states, like UI logics?



      The use case that comes up in my mind is maybe the registration section of an app.



      We may need to create an intermediary scope layer to store the information that user filled in (up until the user hit the register/finish button). If the user clicks the register button, that the user object will be sent back to the parent RIBs via listener? Correct?










      share|improve this question















      1. So the data flow of RIBs architecture is basically from top to bottom. So does that mean all the data stream that child RIBs needs, need to be prepared/ready ahead of time at the Root RIBs?
        If yes, which means all the APIs/networking calls/database operations are all happened within the Root RIBs?

      2. If the Root RIBs stores the whole app state, are all those streams being initialized at the boot time? Can I lazy initialize part of them as some of them are not required if that particular child RIBs is not being attached to the tree yet?

      3. Referring to this article from Uber engineering blog
        https://eng.uber.com/deep-scope-hierarchies/



      New Rider App: Deep Scope Hierarchy



      Given that two and three level scope hierarchies have major problems, we did not limit ourselves to a set number of scope layers when we were developing the new app. Instead, we created new intermediary scope layers wherever useful. For example, the PreRequest scope is used to store objects that need to be shared by all PreRequest screen states such as Home, ProductSelection, and RefinementSteps.




      Are there any criteria, what kind of object/state or when should we use the intermediary scope layers approach, but not creating a DI stream at Root and feed the child Ribs as a dependency?

      What should we concern? Does that require API call? Not business logic related states, like UI logics?



      The use case that comes up in my mind is maybe the registration section of an app.



      We may need to create an intermediary scope layer to store the information that user filled in (up until the user hit the register/finish button). If the user clicks the register button, that the user object will be sent back to the parent RIBs via listener? Correct?







      android ios swift uber-api






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 21 '18 at 0:18









      Pang Ho MingPang Ho Ming

      968826




      968826
























          0






          active

          oldest

          votes











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53403558%2fribs-architectures-data-flow%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53403558%2fribs-architectures-data-flow%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          MongoDB - Not Authorized To Execute Command

          How to fix TextFormField cause rebuild widget in Flutter

          in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith